DC('source.URL') : ('source_url', str_to_unicode),
DC('identifier.url') : ('url', str_to_unicode),
DC('relation.hasPart') : ('parts', str_to_unicode_list),
+ DC('rights.license') : ('license', str_to_unicode),
+ DC('rights') : ('license_description', str_to_unicode),
}
@classmethod
raise ParseError(e)
description = tree.find('//' + book_info.RDF('Description'))
+ book_info.wiki_url = description.get(cls.RDF('about'), None)
+
if description is None:
raise ParseError('no Description tag found in document')
root = etree.Element(self.RDF('RDF'))
description = etree.SubElement(root, self.RDF('Description'))
+ if self.wiki_url:
+ description.set(self.RDF('about'), self.wiki_url)
+
for tag, (attribute, converter) in self.mapping.iteritems():
if hasattr(self, attribute):
e = etree.Element(tag)
return unicode(etree.tostring(root, 'utf-8'), 'utf-8')
+ def to_dict(self):
+ etree._namespace_map[str(self.RDF)] = 'rdf'
+ etree._namespace_map[str(self.DC)] = 'dc'
+
+ result = {'about': self.wiki_url}
+ for tag, (attribute, converter) in self.mapping.iteritems():
+ if hasattr(self, attribute):
+ result[attribute] = unicode(getattr(self, attribute))
+
+ return result
+
def parse(file_name):
return BookInfo.from_file(file_name)