-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrss.py
More file actions
79 lines (70 loc) · 2.22 KB
/
Copy pathrss.py
File metadata and controls
79 lines (70 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import time, urllib
from xml.dom.minidom import parseString
class RSS:
rssfeeds = []
lastupdate = 0
def __init__(self, feeds, lastupdate):
self.update_feeds(feeds, lastupdate)
for feed in feeds:
self.rssfeeds.append({'feed' : feed, 'recentcheck' : False,
'lastresult' : False, 'lastupdate' : lastupdate})
def update_feeds(self, feeds, lastupdate=0):
for feed in feeds:
self.rssfeeds.append({'feed' : feed, 'recentcheck' : False,
'lastresult' : False, 'lastupdate' : lastupdate})
def check_feed(self, feed):
if feed['recentcheck']:
return feed
try:
content = urllib.urlopen(feed['feed'])
except IOError:
print "Error reading `%s':" % feed['feed']
print "Connection failed."
return feed
xml = parseString(content.read())
for item in xml.getElementsByTagName('item'):
date = time.mktime(time.strptime(item.getElementsByTagName('pubDate')[0].childNodes[0].data, "%a, %d %b %Y %H:%M:%S +0000"))
if date > feed['lastupdate']:
feed['lastresult'] = True
feed['recentcheck'] = True
return feed
feed['recentcheck'] = True
return feed
def check(self):
i = 0
for feed in self.rssfeeds:
self.rssfeeds[i] = self.check_feed(feed)
if self.rssfeeds[i]['lastresult']:
return True
i += 0
return False
def get_torrents_from_feed(self, i, feed):
try:
content = urllib.urlopen(feed['feed'])
except IOError:
print "Error reading `%s':" % feed['feed']
print "Connection failed."
return []
xml = parseString(content.read())
newest = 0
items = []
for item in xml.getElementsByTagName('item'):
date = time.mktime(time.strptime(item.getElementsByTagName('pubDate')[0].childNodes[0].data, "%a, %d %b %Y %H:%M:%S +0000"))
if date > feed['lastupdate']:
if date > newest:
newest = date
title = item.getElementsByTagName('title')[0].childNodes[0].data
url = item.getElementsByTagName('guid')[0].childNodes[0].data
items.append({'title': title, 'url': url})
feed['lastupdate'] = newest
feed['recentcheck'] = False
feed['lastresult'] = False
self.rssfeeds[i] = feed
return items
def get_torrents(self):
items = []
i = 0
for feed in self.rssfeeds:
items += self.get_torrents_from_feed(i, feed)
i += 1
return items