From 0e37090239646349d74df0479a387896cb27349a Mon Sep 17 00:00:00 2001 From: Zaran Date: Tue, 15 May 2012 01:24:24 -0700 Subject: Simple access to the Google Reader API --- googlereader.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 googlereader.py (limited to 'googlereader.py') diff --git a/googlereader.py b/googlereader.py new file mode 100644 index 0000000..d152b98 --- /dev/null +++ b/googlereader.py @@ -0,0 +1,45 @@ +import requests +from bs4 import BeautifulSoup + +class Feeder: + + AUTH_URL = "https://www.google.com/accounts/ClientLogin" + FEED_URL = "http://www.google.com/reader/atom/feed/" + + def __init__(self,email,passwd): + """sets the auth header to be included in + each subsequent request""" + self.email = email + self.passwd = passwd + params = { "accountType": "GOOGLE", + "Email": email, + "Passwd": passwd, + "service": "reader", + "source": "thibaut"} + r = requests.post(self.AUTH_URL, + data=params) + auth = r.text.split("\n")[2].split("=")[1] + self.headers = {"Authorization": "GoogleLogin auth={}".format(auth)} + + def getFeed(self,url): + """generator which returns feed entries one by one. + it seems that google caps the n parameter to 1000 so + we have to use the continuation parameter""" + r = requests.get(self.FEED_URL+url,headers = self.headers) + soup = BeautifulSoup(r.text) + for entry in soup("entry"): + yield entry + while soup.find("gr:continuation") is not None: + params = {"c": soup.find("gr:continuation").string} + r = requests.get(self.FEED_URL+url, + params = params, + headers = self.headers) + soup = BeautifulSoup(r.text) + for entry in soup("entry"): + yield entry + +if __name__=="__main__": + import sys + feeder = Feeder(sys.argv[1],sys.argv[2]) + for entry in feeder.getFeed("http://planetkde.org/rss20.xml"): + print entry.published.string, entry.title.string -- cgit v1.2.3-70-g09d2