Есть ли у Google Reader API, и если да, то как я могу подсчитать количество непрочитанных сообщений для конкретного пользователя, зная его имя пользователя и пароль?
Но тег не служит никакой цели. Скорее, вы должны добавить примечание к фактическому вопросу, указав, что вам понравится образец кода.





Это там. Тем не менее, все еще в бета-версии.
Этот вопрос отвечает на вопрос в том виде, в каком его задают. Если есть какая-то причина, по которой автор вопроса не считает ее достаточной, возможно, ему следует отредактировать свой вопрос, чтобы уточнить.
Как бы мне ни хотелось, это НЕ официальный API Google Reader. Это просто перестроенная догадка, которая может сломаться в любой момент.
Этот URL-адрес даст вам количество непрочитанных сообщений на канал. Затем вы можете перебирать фиды и суммировать подсчеты.
http://www.google.com/reader/api/0/unread-count?all=true
Вот минималистичный пример на Python ... парсинг xml / json и суммирование счетчиков оставлен в качестве упражнения для читателя:
import urllib
import urllib2
username = '[email protected]'
password = '******'
# Authenticate to obtain SID
auth_url = 'https://www.google.com/accounts/ClientLogin'
auth_req_data = urllib.urlencode({'Email': username,
'Passwd': password,
'service': 'reader'})
auth_req = urllib2.Request(auth_url, data=auth_req_data)
auth_resp = urllib2.urlopen(auth_req)
auth_resp_content = auth_resp.read()
auth_resp_dict = dict(x.split('=') for x in auth_resp_content.split('\n') if x)
auth_token = auth_resp_dict["Auth"]
# Create a cookie in the header using the SID
header = {}
header['Authorization'] = 'GoogleLogin auth=%s' % auth_token
reader_base_url = 'http://www.google.com/reader/api/0/unread-count?%s'
reader_req_data = urllib.urlencode({'all': 'true',
'output': 'xml'})
reader_url = reader_base_url % (reader_req_data)
reader_req = urllib2.Request(reader_url, None, header)
reader_resp = urllib2.urlopen(reader_req)
reader_resp_content = reader_resp.read()
print reader_resp_content
И еще несколько ссылок по теме:
Для общего интереса - после изменений, внесенных в API Google Reader в июне, этот пример больше не работает ...
Исправлен этот пример. Спасибо livibetter - я читал об изменении SID -> Auth, но нигде не видел документированной части 'service': 'reader'.
Большой! Также важно, чтобы люди запускали этот тикет в трекере Google Api, чтобы Google перестал блокировать людей в greader: code.google.com/p/gdata-issues/issues/…
В API, опубликованном в [1], поле «токен» должно быть «T».
[1] http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
Это не научная статья. Вы можете размещать ссылки [1] в строке! :-)
@drozzy Я работаю в предположении, что вы не шутите. Все, что сделал Ясин, это пропустил двоеточие. Двоеточие сразу после второго [1] соответствует синтаксису уценки и делает его встроенной ссылкой. Это может быть быстрее, без необходимости щелчка мышью, а затем с использованием предоставленного графического интерфейса.
Извините, не знаю, что на меня нашло.
Вот обновление этот ответ
import urllib
import urllib2
username = '[email protected]'
password = '******'
# Authenticate to obtain Auth
auth_url = 'https://www.google.com/accounts/ClientLogin'
#auth_req_data = urllib.urlencode({'Email': username,
# 'Passwd': password})
auth_req_data = urllib.urlencode({'Email': username,
'Passwd': password,
'service': 'reader'})
auth_req = urllib2.Request(auth_url, data=auth_req_data)
auth_resp = urllib2.urlopen(auth_req)
auth_resp_content = auth_resp.read()
auth_resp_dict = dict(x.split('=') for x in auth_resp_content.split('\n') if x)
# SID = auth_resp_dict["SID"]
AUTH = auth_resp_dict["Auth"]
# Create a cookie in the header using the Auth
header = {}
#header['Cookie'] = 'Name=SID;SID=%s;Domain=.google.com;Path=/;Expires=160000000000' % SID
header['Authorization'] = 'GoogleLogin auth=%s' % AUTH
reader_base_url = 'http://www.google.com/reader/api/0/unread-count?%s'
reader_req_data = urllib.urlencode({'all': 'true',
'output': 'xml'})
reader_url = reader_base_url % (reader_req_data)
reader_req = urllib2.Request(reader_url, None, header)
reader_resp = urllib2.urlopen(reader_req)
reader_resp_content = reader_resp.read()
print reader_resp_content
Google Reader удалил аутентификацию SID примерно в июне 2010 года (я думаю), использование новой аутентификации из ClientLogin - это новый способ, и он немного проще (заголовок короче). Вам нужно будет добавить service в данные для запроса Auth, я заметил, что Auth не возвращается, если вы не отправляете service=reader.
Подробнее об изменении метода аутентификации можно прочитать в эта ветка.
@GateKiller: Я понимаю мотивацию для добавления тега "code-request" на это ... У меня также есть открытая награда за вопрос, где единственным ответом является ссылка на (неработающую) документацию API, и меня раздражает то, что Я в конечном итоге заплачу 300 репутации тому, кто только что погуглил по моим ключевым словам.