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 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
import feedparser
import time
import datetime
import tempfile
import linecache
# temporary file used to store rss entries
filename = "/tmp/rsstimer.tmp"
# interval in seconds between rss updates
updateinterval = 60
# lcd4linux permits only 1 parameter passed to the function
# we send the rss title id with the ! spacer
def getfeed(rssfeed):
print rssfeed
idx = 0
feed = rssfeed.split('!')[0]
idx = int(rssfeed.split('!')[-1])
if (idx <= 0): idx = 1;
oldfeed = fgetfeed()
if (oldfeed != feed):
lastupdate = 0
print "Feed changed refresing"
else:
lastupdate = fgetseconds()
if (lastupdate <= 0):
saverss(feed)
else:
now = getseconds()
delta = now - lastupdate
if (delta > updateinterval):
print "Last update: " + str(delta) + " seconds ago. Updating the rss entries."
saverss(feed)
# first line in the file is the timestamp second is the feed url
output = linecache.getline(filename, idx + 2)
print output
return output
def getseconds():
ts = datetime.datetime.now()
return time.mktime(ts.timetuple())
def fgetseconds():
try:
f = open(filename, "r")
except IOError:
print "Cannot get timestamp from file"
return 0
else:
return float(f.readline())
def fgetfeed():
try:
f = open(filename, "r")
except IOError:
print "Cannot get feed from file"
return ' '
else:
# skip first line
f.readline()
return f.readline().rstrip("\n")
def saverss(rssfeed):
linecache.clearcache()
f = open(filename, "w")
# save timestamp
f.write(str(getseconds()))
f.write("\n")
# save feed url
f.write(rssfeed)
f.write("\n")
print "Downloading the rss feed from: " + rssfeed
feed = feedparser.parse(rssfeed)
for entry in feed.entries:
f.write(entry.title)
f.write("\n")
f.close
print "Done"
def printrss():
f = open(filename, "r")
f.readline()
for line in f:
print line
#print getfeed("http://slashdot.org/slashdot.rdf!5")
print getfeed("http://www.linux.com/feed?theme=rss!1")
|