import locale import RSS ns = RSS.ns def generate_rss(baseurl, files): galleries = RSS.CollectionChannel() galleries.setMD((ns.rss10, "channel"), { (ns.rss10, "title"): "Photos", # read from meta.rdf too? (ns.rss10, "link"): baseurl }) for f in files: try: channel = RSS.CollectionChannel() channel.parse(f) meta = channel.getMD((RSS.ns.rss10, "channel")) item = {} item[(ns.rss10, 'link')] = meta[(ns.rss10, "link")] #+ "index.rss" item[(ns.rss10, 'title')] = meta[(ns.rss10, "title")] if meta.has_key((ns.rss10, "description")): item[(ns.rss10, 'description')] = meta[(ns.rss10, "description")] item[(ns.dc, 'type')] = "Collection" if meta.has_key((ns.dc, "date")): item[(ns.dc, 'date')] = meta[(ns.dc, "date")] if meta.has_key((ns.rawk, "title-image")): item[(ns.rawk, 'title-image')] = meta[(ns.rawk, "title-image")] # TODO: what does Picdiary do here? galleries.addItem(item, -1) except Exception, e: import sys; sys.stderr.write("Exception %s when handling %s\n" % (e, f)) def sorter(a, b): key = (ns.dc, "date") # TODO: sort items without a date first or something return locale.strcoll(galleries.getItem(b)[key], galleries.getItem(a)[key]) galleries.listItems().sort(sorter) return galleries