Mercurial > pidgin
comparison finch/libgnt/pygnt/example/rss/gntrss.py @ 18714:121d1560346c
A few updates to the rss reader.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 29 Jul 2007 10:37:10 +0000 |
parents | 254823d66aa5 |
children | 64a7b13d3b8d |
comparison
equal
deleted
inserted
replaced
18713:8000beb73585 | 18714:121d1560346c |
---|---|
34 self.parent = parent | 34 self.parent = parent |
35 self.unread = True | 35 self.unread = True |
36 | 36 |
37 def remove(self): | 37 def remove(self): |
38 self.emit('delete', self.parent) | 38 self.emit('delete', self.parent) |
39 if self.unread: | |
40 self.parent.set_property('unread', self.parent.unread - 1) | |
39 | 41 |
40 def do_set_property(self, property, value): | 42 def do_set_property(self, property, value): |
41 if property.name == 'unread': | 43 if property.name == 'unread': |
42 self.unread = value | 44 self.unread = value |
43 | 45 |
98 # return True | 100 # return True |
99 # The thread has ended!! | 101 # The thread has ended!! |
100 #result = self.thread.result | 102 #result = self.thread.result |
101 #self.thread = None | 103 #self.thread = None |
102 result = feedparser.parse(self.url) | 104 result = feedparser.parse(self.url) |
105 # XXX Look at result['bozo'] first, and emit some signal that the UI can use | |
106 # to indicate (dim the row?) that the feed has invalid XML format or something | |
107 | |
103 channel = result['channel'] | 108 channel = result['channel'] |
104 self.set_property('link', channel['link']) | 109 self.set_property('link', channel['link']) |
105 self.set_property('desc', channel['description']) | 110 self.set_property('desc', channel['description']) |
106 self.set_property('title', channel['title']) | 111 self.set_property('title', channel['title']) |
107 self.set_property('unread', len(result['items'])) | |
108 self.timer = 0 | 112 self.timer = 0 |
109 items = result['items'] | 113 items = result['items'] |
110 tmp = {} | 114 tmp = {} |
111 for item in self.items: | 115 for item in self.items: |
112 tmp[hash(item)] = item | 116 tmp[hash(item)] = item |
113 | 117 |
118 unread = self.unread | |
114 for item in items: | 119 for item in items: |
115 try: | 120 try: |
116 exist = self.hash[item_hash(item)] | 121 exist = self.hash[item_hash(item)] |
117 del tmp[hash(exist)] | 122 del tmp[hash(exist)] |
118 except: | 123 except: |
119 itm = FeedItem(item, self) | 124 itm = FeedItem(item, self) |
120 self.items.append(itm) | 125 self.items.append(itm) |
121 self.emit('added', itm) | 126 self.emit('added', itm) |
122 self.hash[item_hash(item)] = itm | 127 self.hash[item_hash(item)] = itm |
128 unread = unread + 1 | |
129 | |
123 for hv in tmp: | 130 for hv in tmp: |
124 tmp[hv].remove() | 131 tmp[hv].remove() |
125 | 132 |
133 if unread != self.unread: | |
134 self.set_property('unread', unread) | |
126 return False | 135 return False |
127 | 136 |
128 def refresh(self): | 137 def refresh(self): |
129 #if self.thread == 0: | 138 #if self.thread == 0: |
130 # self.thread = FeedReader(self) | 139 # self.thread = FeedReader(self) |