Anzahl der ungelesenen Google Reader-APIs
-
09-06-2019 - |
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?
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.