X-Git-Url: https://git.ucc.asn.au/?p=planet-ucc.git;a=blobdiff_plain;f=update-planet;h=86fc4a82beba6ce14ddf1cccf37a6163c24dffa5;hp=c6f04ddf05cc329c929c2c575230859a3b905f88;hb=c4045cc7052293f203832c307037a31d20f959f6;hpb=b9d9d352f6a748d1c35696e7eec7de8bbb724556 diff --git a/update-planet b/update-planet index c6f04dd..86fc4a8 100755 --- a/update-planet +++ b/update-planet @@ -7,34 +7,55 @@ # (c) 2004, Davyd Madeley # -import sys, urllib2, codecs -import XMLParse, XMLWriter +# standard python modules +import sys, codecs +# planetUCC modules +import XMLParse2 as XMLParse, XMLWriter, CacheHandler +# planetUCC output plugins +import XHTMLWriter, RSS2Writer, RSS1Writer -# step 1: read in the config and download the feeds +# step 1: read in the config and check each object from cache +cache = CacheHandler.CacheHandler() feeds = [] + for feed in open('feedlist').readlines(): if feed.strip()[0] != '#': storage = feed.strip().split('\t') name, feed = storage[0], storage[-1] - sys.stdout.write('Downloading feed "%s" from %s... ' % (name, feed)) try: - # XXX: might want to consider some good caching code in here - feeds.append((name, feed, urllib2.urlopen(feed).read())) - sys.stdout.write('done.\n') + feeds.append((name, feed, cache.getBlog(name, feed))) except: - sys.stdout.write('failed.\n') + sys.stderr.write('DEBUG: update-planet: something went wrong retrieving feed\n') # step 2: process each feed blogs = [] for feed in feeds: - xml = XMLParse.XMLParse(feed[2]).parse() - for blog in xml: + # XMLParse2 takes two paramaters, a URL and a CacheObject + blog = XMLParse.XMLParse(feed[1], feed[2]).parse() + if blog: blog.blogTitle = feed[0] - blogs += xml + blog.feedURL = feed[1] + blogs.append(blog) + # write the cache back down to disk + cache.storeBlog(blog) + else: + pass + +# step 3: sift the feeds +xmlwriter = XMLWriter.XMLWriter(blogs) -# step 3: write feed to disk +# step 4: write feed to disk try: - codecs.open('planet.html', 'wb', 'utf-8').write(XMLWriter.XMLWriter(XMLWriter.XHTMLWriter, blogs).write()) + codecs.open('planet.html', 'wb', 'utf-8').write(xmlwriter.write(XHTMLWriter.XHTMLWriter)) except: sys.stderr.write('DEBUG: update-planet: could not write planet.html, aborting\n') - raise + +try: + codecs.open('rss2.xml', 'wb', 'utf-8').write(xmlwriter.write(RSS2Writer.RSS2Writer)) +except: + sys.stderr.write('DEBUG: update-planet: could not write rss2.xml, aborting\n') + +try: + codecs.open('rss1.xml', 'wb', 'utf-8').write(xmlwriter.write(RSS1Writer.RSS1Writer)) +except: + sys.stderr.write('DEBUG: update-planet: could not write rss1.xml, aborting\n')