+
+class PithosXMLSource(VersionSource):
+ """
+ Extract version from versioninfo.xml
+ """
+ source_type = 'pithos_xml'
+
+ def load(self):
+ """
+ Extract first item from versioninfo.xml
+ """
+ spliturl = urlparse.urlsplit(self.link)
+ baseurl = spliturl.geturl().replace(spliturl.path, '')
+ html = self.get_url(self.link)
+ items = html.xpath("//item")
+
+ # helper lambdas
+ def _parse_row(row):
+ try:
+ name = row.find("title").text
+ link = row.find("enclosure").attrib["url"]
+ strdate = row.find("pubdate").text
+ date = datetime.strptime(strdate.split(" +")[0],
+ "%a, %d %B %Y %H:%M:%S")
+ print "DATE", date
+ version = row.find("title").text
+ return {
+ 'name': name,
+ 'link': link,
+ 'date': date,
+ 'version': version
+ }
+ except Exception, e:
+ return None
+
+ versions = filter(bool, map(_parse_row, items))
+ self.versions = versions
+ return self
+
+