Frage

Verfügt Google Reader über eine API und wenn ja, wie kann ich die Anzahl der ungelesenen Beiträge für einen bestimmten Benutzer ermitteln, wenn ich seinen Benutzernamen und sein Passwort kenne?

War es hilfreich?

Lösung

Über diese URL erhalten Sie eine Zählung der ungelesenen Beiträge pro Feed.Anschließend können Sie die Feeds durchlaufen und die Zählungen zusammenfassen.

http://www.google.com/reader/api/0/unread-count?all=true

Hier ist ein minimalistisches Beispiel in Python ... das Parsen von XML/JSON und das Summieren der Zählungen bleibt dem Leser als Übung überlassen:

import urllib
import urllib2

username = 'username@gmail.com'
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

Und einige zusätzliche Links zum Thema:

Andere Tipps

Es ist Dort.Allerdings noch in der Betaphase.

Hier ist ein Update zu diese Antwort

import urllib
import urllib2

username = 'username@gmail.com'
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 hat die SID-Authentifizierung etwa im Juni 2010 entfernt (glaube ich). Die Verwendung einer neuen Authentifizierung von ClientLogin ist die neue Methode und etwas einfacher (Header ist kürzer).Sie müssen hinzufügen service in Daten zur Anfrage Auth, mir ist aufgefallen, dass nein Auth zurückgegeben, wenn Sie das nicht senden service=reader.

Weitere Informationen zur Änderung der Authentifizierungsmethode finden Sie unter dieser Thread.

In der in [1] veröffentlichten API sollte das Feld „Token“ „T“ sein.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top