3 # UCC Minutes Arse (RSS) generator
12 MINUTESURL = 'http://www.ucc.asn.au/infobase/minutes/'
13 MINUTESPATH = '/services/http/infobase/minutes/'
16 return time.strftime("%a, %d %b %Y %H:%M:%S +0800", pubtime)
19 '''Loads relevant information out of UCC minutes'''
20 def __init__(self, path):
21 if os.path.exists(path):
22 self.stattime = os.stat(path)[-2]
23 self.modtime = RFCTime(time.localtime(self.stattime))
25 self.body = escape(f.read())
28 self.title = self.body.split('\n')[0].strip()
30 webpath = path.split('/')[-2:]
31 self.url = MINUTESURL + '/'.join(webpath)
33 def RSS(items,pubtime=''):
34 pubtime = pubtime or RFCTime(time.localtime())
35 output = '''<?xml version='1.0' encoding='utf-8' ?>
36 <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
38 <atom:link href="http://www.ucc.asn.au/infobase/minutes/minutes.xml" rel="self" type="application/rss+xml" />
39 <title>UCC Meeting Minutes</title>
40 <link>http://www.ucc.asn.au/infobase/minutes/</link>
41 <description>Meeting Minutes of the University Computer Club</description>
43 output += ' <lastBuildDate>%s</lastBuildDate>\n'%pubtime
44 output += ''' <generator>The giant hack that is Python by JCF</generator>
49 output += '</channel>\n</rss>'
53 def itemWriter(minutes):
55 output += '<guid>%s</guid>\n'%minutes.url
56 output += '<title>%s</title>\n'%minutes.title
57 output += '<pubDate>%s</pubDate>\n'%minutes.modtime
58 output += '<link>%s</link>\n'%minutes.url
59 output += '<description><![CDATA[<pre>%s</pre>]]></description>\n'%minutes.body
63 # BEWARE THE GIANT HACK - This should be replaced before it burns someone
64 args = shlex.split('/usr/bin/find %s'%MINUTESPATH + ' -maxdepth 2 -iname "*txt" -type f -printf "%TY-%Tm-%Td %TT %p\n"')
65 sub = subprocess.Popen(args, stdout=subprocess.PIPE)
66 items = sub.communicate()[0].split('\n')
69 items = [os.path.abspath(x.split(' ')[-1]) for x in items[-15:]]
72 minutes = [UCCMinutes(x) for x in items]
74 print RSS(''.join([itemWriter(x) for x in minutes]), minutes[0].modtime)