Sat, 28 Jul 2007 11:30:54 +0000
A proof-of-conecpt RSS reader using pygnt.
|
19175
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1 | #!/usr/bin/env python |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
2 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
3 | # A very simple and stupid RSS reader |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
4 | # |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
5 | # Uses the Universal Feed Parser |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
6 | # |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
7 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
8 | import threading |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
9 | import feedparser |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
10 | import gobject |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
11 | import sys |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
12 | import time |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
13 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
14 | ## |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
15 | # The FeedItem class. It will update emit 'delete' signal when it's |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
16 | # destroyed. |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
17 | ## |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
18 | class FeedItem(gobject.GObject): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
19 | __gproperties__ = { |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
20 | 'unread' : (gobject.TYPE_BOOLEAN, 'read', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
21 | 'The unread state of the item.', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
22 | False, gobject.PARAM_READWRITE) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
23 | } |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
24 | __gsignals__ = { |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
25 | 'delete' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_OBJECT,)) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
26 | } |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
27 | def __init__(self, item, parent): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
28 | self.__gobject_init__() |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
29 | self.date = item['date'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
30 | self.date_parsed = item['date_parsed'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
31 | self.title = item['title'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
32 | self.summary = item['summary'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
33 | self.link = item['link'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
34 | self.parent = parent |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
35 | self.unread = True |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
36 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
37 | def remove(self): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
38 | self.emit('delete', self.parent) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
39 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
40 | def do_set_property(self, property, value): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
41 | if property.name == 'unread': |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
42 | self.unread = value |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
43 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
44 | gobject.type_register(FeedItem) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
45 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
46 | def item_hash(item): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
47 | return str(item['date'] + item['title']) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
48 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
49 | ## |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
50 | # The Feed class. It will update the 'link', 'title', 'desc' and 'items' |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
51 | # attributes if/when they are updated (triggering 'notify::<attr>' signal) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
52 | ## |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
53 | class Feed(gobject.GObject): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
54 | __gproperties__ = { |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
55 | 'link' : (gobject.TYPE_STRING, 'link', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
56 | 'The web page this feed is associated with.', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
57 | '...', gobject.PARAM_READWRITE), |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
58 | 'title' : (gobject.TYPE_STRING, 'title', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
59 | 'The title of the feed.', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
60 | '...', gobject.PARAM_READWRITE), |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
61 | 'desc' : (gobject.TYPE_STRING, 'description', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
62 | 'The description for the feed.', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
63 | '...', gobject.PARAM_READWRITE), |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
64 | 'items' : (gobject.TYPE_POINTER, 'items', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
65 | 'The items in the feed.', gobject.PARAM_READWRITE), |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
66 | 'unread' : (gobject.TYPE_INT, 'unread', |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
67 | 'Number of unread items in the feed.', 0, 10000, 0, gobject.PARAM_READWRITE) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
68 | } |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
69 | __gsignals__ = { |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
70 | 'added' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_OBJECT,)) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
71 | } |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
72 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
73 | def __init__(self, url): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
74 | self.__gobject_init__() |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
75 | self.url = url # The url of the feed itself |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
76 | self.link = url # The web page associated with the feed |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
77 | self.desc = url |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
78 | self.title = url |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
79 | self.unread = 0 |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
80 | self.timer = 0 |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
81 | self.items = [] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
82 | self.hash = {} |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
83 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
84 | def do_set_property(self, property, value): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
85 | if property.name == 'link': |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
86 | self.link = value |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
87 | elif property.name == 'desc': |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
88 | self.desc = value |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
89 | elif property.name == 'title': |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
90 | self.title = value |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
91 | elif property.name == 'unread': |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
92 | self.unread = value |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
93 | pass |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
94 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
95 | def check_thread_for_death(self): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
96 | #if self.thread.running: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
97 | # sys.stderr.write(time.ctime() + "continue") |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
98 | # return True |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
99 | # The thread has ended!! |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
100 | #result = self.thread.result |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
101 | #self.thread = None |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
102 | result = feedparser.parse(self.url) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
103 | channel = result['channel'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
104 | self.set_property('link', channel['link']) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
105 | self.set_property('desc', channel['description']) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
106 | self.set_property('title', channel['title']) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
107 | self.set_property('unread', len(result['items'])) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
108 | self.timer = 0 |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
109 | items = result['items'] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
110 | tmp = {} |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
111 | for item in self.items: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
112 | tmp[hash(item)] = item |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
113 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
114 | for item in items: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
115 | try: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
116 | exist = self.hash[item_hash(item)] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
117 | del tmp[hash(exist)] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
118 | except: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
119 | itm = FeedItem(item, self) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
120 | self.items.append(itm) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
121 | self.emit('added', itm) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
122 | self.hash[item_hash(item)] = itm |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
123 | for hv in tmp: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
124 | tmp[hv].remove() |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
125 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
126 | return False |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
127 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
128 | def refresh(self): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
129 | #if self.thread == 0: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
130 | # self.thread = FeedReader(self) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
131 | # self.thread.start() |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
132 | if self.timer == 0: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
133 | self.timer = gobject.timeout_add(1000, self.check_thread_for_death) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
134 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
135 | gobject.type_register(Feed) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
136 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
137 | ## |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
138 | # A FeedReader class, which is threaded to make sure it doesn't freeze the ui |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
139 | # (this thing doesn't quite work ... yet) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
140 | ## |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
141 | class FeedReader(threading.Thread): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
142 | def __init__(self, feed): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
143 | self.feed = feed |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
144 | self.running = True |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
145 | threading.Thread.__init__(self) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
146 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
147 | def run(self): |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
148 | sys.stderr.write(str(time.ctime()) + " STARTED!!!\n\n\n") |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
149 | self.running = True |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
150 | self.result = feedparser.parse(self.feed.url) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
151 | self.running = False |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
152 | sys.stderr.write(str(time.ctime()) + " DONE!!!\n\n\n") |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
153 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
154 | feeds = [] |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
155 | urls = ("http://rss.slashdot.org/Slashdot/slashdot", |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
156 | "http://www.python.org/channews.rdf", |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
157 | "http://pidgin.im/rss.php", |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
158 | "./rss.php" |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
159 | ) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
160 | |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
161 | for url in urls: |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
162 | feed = Feed(url) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
163 | feeds.append(feed) |
|
d6cea4e8560f
A proof-of-conecpt RSS reader using pygnt.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
164 |