Брой непрочетени API на Google Reader

Има ли Google Reader API и ако има, как мога да получа броя на непрочетените публикации за конкретен потребител, като знам потребителското име и паролата му?


person GateKiller    schedule 09.09.2008    source източник
comment
@GateKiller: Разбирам мотивацията за хвърляне на етикет за искане на код върху това... Също така имам отворена награда за въпрос, където единственият отговор е връзка към (счупената) документация на API, и ме дразни, че аз В крайна сметка ще изплатя 300 представителя на някой, който току-що е потърсил в Гугъл моите ключови думи.   -  person Shog9    schedule 24.02.2009
comment
Но етикетът не служи за никаква цел. По-скоро трябва да добавите бележка към действителния си въпрос, в която да посочите, че бихте оценили примерен код.   -  person Shog9    schedule 24.02.2009


Отговори (4)


Този 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

И няколко допълнителни връзки по темата:

person jimmyorr    schedule 24.02.2009
comment
За общ интерес - след промените, направени в API на Google Reader през юни, този пример вече не работи... - person Joe; 08.07.2010
comment
Поправихме този пример. Благодарение на livibetter -- бях прочел за SID -› промяната на удостоверяването, но не видях никъде документирана частта "услуга": "четец". - person jimmyorr; 19.08.2010
comment
Страхотен! Също така е важно хората да стартират този билет в инструмента за проследяване на Google Api, така че Google да спре да заключва хората в по-голямо: code.google.com/p/gdata-issues/issues/ - person Daniel Ribeiro; 19.08.2010

Той е там. Все още е в бета версия.

person Gulzar Nazim    schedule 09.09.2008
comment
Този въпрос отговаря на въпроса, както е зададен. Ако има някаква причина, поради която авторът на въпроса не я намира за достатъчна, може би той трябва да редактира въпроса си, за да изясни. - person EBGreen; 24.02.2009
comment
Колкото и да ми се иска, това НЕ е официален API на Google Reader. Това е просто обратно проектирано предположение, което може да се развали всеки момент. - person Andriy Drozdyuk; 08.07.2010

Ето актуализация на този отговор

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.

Можете да прочетете повече за промяната на метода за удостоверяване в тази тема .

person livibetter    schedule 18.08.2010

В API, публикуван в [1], полето "token" трябва да бъде "T"

[1] http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI

person yassin    schedule 07.04.2010
comment
Това не е научна статия. Можете да поставите връзки [1] вътре! :-) - person Andriy Drozdyuk; 08.07.2010
comment
@drozzy Работя при предположението, че не се шегуваш. Всичко, което Ясин направи, беше да пропусне двоеточие. Двоеточие непосредствено след второто [1] пасва на синтаксиса на markdown и го прави вградена връзка. Това може да бъде по-бързо, без да са необходими щраквания на мишката, след това с помощта на предоставения графичен интерфейс. - person Davorak; 29.01.2011
comment
Съжалявам, не знам какво ме хвана. - person Andriy Drozdyuk; 01.02.2011