#!/usr/bin/python # Adam Backstrom # 30 August 2007 # Public domain code. import sys, urllib, os, cPickle from django.utils import feedgenerator from datetime import datetime from time import strptime, strftime def create_feed( cachefile, outfile ): feed = feedgenerator.Atom1Feed( title=u'Alpha Five Updates', link=u'http://downloads.alphasoftware.com/A5V8Download/PatchDownload.ASP', description=u'Updates to Alpha Five V8', language=u'en', ) f = open( cachefile, 'rb' ) cache = cPickle.load(f) f.close() for release in cache: date = cache[release] feed.add_item( title=u'Update %s' % release, link=u'http://downloads.alphasoftware.com/A5V8Download/PatchDownload.ASP', description='Alpha Five has been updated to version %s.' % release, unique_id=release, pubdate=date, ) stream = open(outfile, 'w') feed.write(stream, 'utf-8') stream.close() def current_release(): result = {} # get the new version data f = urllib.urlopen( 'http://downloads.alphasoftware.com/A5V8Download/a5v8Version.txt' ) version = int( f.readline()[9:-3] ) addin = int( f.readline()[7:-3] ) f.close() full_version = "%d_%d" % (version, addin) # print 'The current Alpha Five Version 8 build is %s' % full_version return full_version def cache_release( cachefile, version ): try: f = open( cachefile, 'rb') cache = cPickle.load(f) f.close() except IOError: cache = {} if cache.has_key( version ) == False: cache[version] = datetime.now() if len(cache) > 0: f = open( cachefile, 'wb') cPickle.dump( cache, f, -1 ) f.close() def main(): scriptdir = os.path.realpath( os.path.dirname(sys.argv[0]) ) outfile = os.path.join( scriptdir, 'update.xml' ) cachefile = os.path.join( scriptdir, '.cache' ) version = current_release() cache_release( cachefile, version ) create_feed( cachefile, outfile ) if __name__ == "__main__": main()