4
Google Reader interface for Gwibber
5
Grillo (Diego Herrera) - 7/02/2009
7
bassed on RSS interface:
8
SegPhault (Ryan Paul) - 11/08/2008
13
import urlparse, feedparser
14
import urllib, urllib2, re
18
"name": "Google Reader",
34
feedparser._HTMLSanitizer.acceptable_elements = []
37
def __init__(self, client, data):
39
self.account = client.account
40
self.service = client.account["service"]
41
self.username = client.account["username"]
44
self.sender = data.get("author", "")
46
if hasattr(data, "source"):
47
self.source = data.source.get("title", "")
48
self.sender = data.source.get("title", "")
49
self.profile_url = data.source.link
51
self.gr_id = data.get("id", "")
53
self.image = "http://www.google.com/reader/ui/2296270177-logo-graphic.gif";
54
self.sender_nick = data.get("author", "")
55
self.sender_id = self.sender
57
self.time = support.parse_time(data.updated)
58
self.bgcolor = "message_color"
59
self.url = data.get("link", "")
61
if(self.source == ""):
62
self.title = self.sender
64
self.title = "%s <small>By %s</small>" % (self.source, self.sender)
69
for category in data.tags:
70
if( (category.term.find("user/")>=0) and (category.term.find("/state/")>=0) and (category.label=='read') ):
71
self.is_unread = False
72
elif((category.term.find("user/")>=0) and (category.term.find("/label/")>=0)):
73
self.categories.append(category.label)
75
self.summary = data.get("summary", "")
76
self.html_string = data.title
78
if(len(self.summary) > 0):
79
self.text = self.summary
81
self.text = data.source.get("title", "")
84
def __init__(self, acct):
86
if(self.account["session"]!= None):
87
self.sid = self.account["session"]
93
header = {'User-agent' : 'Gwibber'}
94
post_data = urllib.urlencode({ 'Email': self.account["username"],
95
'Passwd': self.account["private:password"],
98
'continue': 'http://www.google.com', })
100
request = urllib2.Request('https://www.google.com/accounts/ClientLogin',
104
f = urllib2.urlopen( request )
108
self.sid = re.search('SID=(\S*)', res).group(1)
109
self.account["session"] = self.sid
111
def get_results(self,url, data = None, count = 0):
112
header ={'User-agent' : 'Gwibber',
113
'Cookie': 'Name=SID;SID=%s;Domain=.google.com;Path=/;Expires=160000000000' % self.sid}
114
request = urllib2.Request(url, data, header)
116
f = urllib2.urlopen( request )
120
res = self.get_results(url, data, count+1)
129
def read_message(self, message):
130
webbrowser.open (message.url)
131
if message.is_unread:
132
token = self.get_results('http://www.google.com/reader/api/0/token')
133
post_data = urllib.urlencode ({ 'i' : message.gr_id,
136
'a' : 'user/-/state/com.google/read' })
138
url = 'http://www.google.com/reader/api/0/edit-tag'
139
self.get_results(url, post_data)
140
message.is_unread = False
144
def get_messages(self):
145
return feedparser.parse(
147
'http://www.google.com/reader/atom/user/-/state/com.google/reading-list?n=%s' % '20' if (self.account["receive_count"] == None) else self.account["receive_count"])).entries
150
for data in self.get_messages():
151
yield Message(self, data)