5 # Downloads feeds from the URLs specified and generates the XHTML files.
10 # standard python modules
13 import XMLParse2 as XMLParse, XMLWriter, CacheHandler
14 # planetUCC output plugins
15 import XHTMLWriter, RSS2Writer, RSS1Writer, FOAFWriter, OPMLWriter
17 # step 1: read in the config and check each object from cache
18 cache = CacheHandler.CacheHandler()
21 for feed in open('feedlist').readlines():
22 if feed.strip()[0] != '#':
23 storage = feed.strip().split('\t')
24 name, feed = storage[0], storage[-1]
26 feeds.append((name, feed, cache.getBlog(name, feed)))
28 sys.stderr.write('DEBUG: update-planet: something went wrong retrieving feed\n')
30 # step 2: process each feed
34 # XMLParse2 takes two paramaters, a URL and a CacheObject
35 blog = XMLParse.XMLParse(feed[1], feed[2]).parse()
37 blog.blogName = feed[0]
38 blog.feedURL = feed[1]
40 # check the old copy of the cache, vs the new copy
41 if not feed[2] or not feed[2].cache or not blog.cache or feed[2].cache != blog.cache:
43 elif len(blog.items) > 0 and len(feed[2].items) > 0 and (blog.items[0].itemTitle != feed[2].items[0].itemTitle or blog.items[0].contents != feed[2].items[0].contents):
45 # write the cache back down to disk
50 # step 3: sift the feeds
51 xmlwriter = XMLWriter.XMLWriter(blogs)
53 # step 4: write feed to disk
55 codecs.open('planet.html', 'wb', 'utf-8').write(xmlwriter.write(XHTMLWriter.XHTMLWriter))
57 sys.stderr.write('DEBUG: update-planet: could not write planet.html, aborting\n')
61 codecs.open('rss2.xml', 'wb', 'utf-8').write(xmlwriter.write(RSS2Writer.RSS2Writer))
63 sys.stderr.write('DEBUG: update-planet: could not write rss2.xml, aborting\n')
66 codecs.open('rss1.xml', 'wb', 'utf-8').write(xmlwriter.write(RSS1Writer.RSS1Writer))
68 sys.stderr.write('DEBUG: update-planet: could not write rss1.xml, aborting\n')
71 codecs.open('foaf.xml', 'wb', 'utf-8').write(xmlwriter.write(FOAFWriter.FOAFWriter))
73 sys.stderr.write('DEBUG: update-planet: could not write foaf.xml, aborting\n')
76 codecs.open('opml.xml', 'wb', 'utf-8').write(xmlwriter.write(OPMLWriter.OPMLWriter))
78 sys.stderr.write('DEBUG: update-planet: could not write opml.xml, aborting\n')
82 sys.stdout.write('PlanetUCC: no objects have changed in the cache, not updating\n')