X-Git-Url: https://git.ucc.asn.au/?p=planet-ucc.git;a=blobdiff_plain;f=update-planet;h=7f31e5279f859208f4137323de8e941a82f7a7d9;hp=6122579ba1e6040dfd61667af9a0efeba66bc261;hb=2a563de3bcc327fa440671db368a261d70e9114b;hpb=783caef083f5dcafaed71dfa3f3a8035109717e9 diff --git a/update-planet b/update-planet index 6122579..7f31e52 100755 --- a/update-planet +++ b/update-planet @@ -7,8 +7,12 @@ # (c) 2004, Davyd Madeley # +# standard python modules import sys, codecs +# planetUCC modules import XMLParse2 as XMLParse, XMLWriter, CacheHandler +# planetUCC output plugins +import XHTMLWriter, RSS2Writer, RSS1Writer, FOAFWriter, OPMLWriter # step 1: read in the config and check each object from cache cache = CacheHandler.CacheHandler() @@ -20,24 +24,61 @@ for feed in open('feedlist').readlines(): name, feed = storage[0], storage[-1] try: feeds.append((name, feed, cache.getBlog(name, feed))) -# # XXX: might want to consider some good caching code in here -# feeds.append((name, feed, urllib2.urlopen(feed).read())) except: - raise + sys.stderr.write('DEBUG: update-planet: something went wrong retrieving feed\n') # step 2: process each feed +tainted = False blogs = [] for feed in feeds: # XMLParse2 takes two paramaters, a URL and a CacheObject blog = XMLParse.XMLParse(feed[1], feed[2]).parse() - blog.blogTitle = feed[0] - blog.feedURL = feed[1] - blogs.append(blog) - # write the cache back down to disk - cache.storeBlog(blog) + if blog: + blog.blogName = feed[0] + blog.feedURL = feed[1] + blogs.append(blog) + # check the old copy of the cache, vs the new copy + if not feed[2] or not feed[2].cache or not blog.cache or feed[2].cache != blog.cache: + tainted = True + 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): + tainted = True + # write the cache back down to disk + cache.storeBlog(blog) + else: + pass -# step 3: write feed to disk +# step 3: sift the feeds +xmlwriter = XMLWriter.XMLWriter(blogs) + +# 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') + +try: + codecs.open('foaf.xml', 'wb', 'utf-8').write(xmlwriter.write(FOAFWriter.FOAFWriter)) +except: + sys.stderr.write('DEBUG: update-planet: could not write foaf.xml, aborting\n') + +try: + codecs.open('opml.xml', 'wb', 'utf-8').write(xmlwriter.write(OPMLWriter.OPMLWriter)) +except: + sys.stderr.write('DEBUG: update-planet: could not write opml.xml, aborting\n') + + +if not tainted: + sys.stdout.write('PlanetUCC: no objects have changed in the cache, not updating\n') + sys.exit(1) +