+
+class AtomParse(Parse):
+ def parse(self):
+ channel = Blog()
+ for node in self.root.childNodes:
+ if node.nodeType == 1 and node.tagName == 'title':
+ channel.blogTitle = self.__retrieve_value__(node)
+ elif node.nodeType == 1 and node.tagName == 'link' and node.attributes.has_key('rel') and node.attributes['rel'].value == "alternate":
+ if node.attributes.has_key('href'):
+ channel.blogURL = node.attributes['href'].value
+ else:
+ sys.stderr.write('DEBUG: AtomParse: Could not find href for link, ignoring\n')
+ elif node.nodeType == 1 and node.tagName == 'entry':
+ # create an item and add it to the list
+ item = BlogItem()
+ channel.items.append(item)
+ # handlers for tags
+ for node2 in node.childNodes:
+ if node2.nodeType == 1 and node2.tagName == 'created':
+ date = self.__retrieve_value__(node2)
+ try:
+ item.itemDate = time.mktime(time.strptime(date, '%Y-%m-%dT%H:%M:%SZ')) + 28800
+ except:
+ sys.stderr.write("DEBUG: AtomParse: time string %s is unparseable\n" % date)
+ elif node2.nodeType == 1 and node2.tagName == 'link' and node2.attributes.has_key('rel') and node2.attributes['rel'].value == 'alternate':
+ if node2.attributes.has_key('href'):
+ item.itemURL = node2.attributes['href'].value
+ else:
+ sys.stderr.write('DEBUG: AtomParse: Could not find href for link, ignoring\n')
+ elif node2.nodeType == 1 and node2.tagName == 'title':
+ item.itemTitle = self.__retrieve_value__(node2)
+ elif node2.nodeType == 1 and node2.tagName == 'summary':
+ for node3 in node2.childNodes:
+ if node3.nodeType == 1 and node3.tagName == 'div':
+ item.contents = self.__retrieve_value__(node3)
+ return [channel]
+
+class RDFParse(Parse):