Codebase list sugar-read-activity / 7c999d7
epubinfo: add description and cover info + pep8 fixes This info is used in Patahgar, not in Read activity, but is useful get the library on sync. Gonzalo Odiard 9 years ago
1 changed file(s) with 25 addition(s) and 8 deletion(s). Raw diff Collapse all Expand all
0 import os
10 import xml.etree.ElementTree as etree
21
32
43 class EpubInfo():
54
6 #TODO: Cover the entire DC range
5 # TODO: Cover the entire DC range
76
87 def __init__(self, opffile):
98 self._tree = etree.parse(opffile)
109 self._root = self._tree.getroot()
1110 self._e_metadata = self._root.find(
12 '{http://www.idpf.org/2007/opf}metadata')
11 '{http://www.idpf.org/2007/opf}metadata')
1312
1413 self.title = self._get_title()
1514 self.creator = self._get_creator()
1918 self.rights = self._get_rights()
2019 self.identifier = self._get_identifier()
2120 self.language = self._get_language()
21 self.summary = self._get_description()
22 self.cover_image = self._get_cover_image()
2223
2324 def _get_data(self, tagname):
2425 element = self._e_metadata.find(tagname)
3233
3334 return ret
3435
36 def _get_description(self):
37 try:
38 ret = self._get_data(
39 './/{http://purl.org/dc/elements/1.1/}description')
40 except AttributeError:
41 return None
42
43 return ret
44
3545 def _get_creator(self):
3646 try:
3747 ret = self._get_data(
38 './/{http://purl.org/dc/elements/1.1/}creator')
48 './/{http://purl.org/dc/elements/1.1/}creator')
3949 except AttributeError:
4050 return None
4151 return ret
4252
4353 def _get_date(self):
44 #TODO: iter
54 # TODO: iter
4555 try:
4656 ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}date')
4757 except AttributeError:
6676 return ret
6777
6878 def _get_identifier(self):
69 #TODO: iter
79 # TODO: iter
7080 element = self._e_metadata.find(
71 './/{http://purl.org/dc/elements/1.1/}identifier')
81 './/{http://purl.org/dc/elements/1.1/}identifier')
7282
7383 if element is not None:
7484 return {'id': element.get('id'), 'value': element.text}
7888 def _get_language(self):
7989 try:
8090 ret = self._get_data(
81 './/{http://purl.org/dc/elements/1.1/}language')
91 './/{http://purl.org/dc/elements/1.1/}language')
8292 except AttributeError:
8393 return None
8494
94104 return None
95105
96106 return subjectlist
107
108 def _get_cover_image(self):
109 element = self._e_metadata.find('{http://www.idpf.org/2007/opf}meta')
110 if element is not None and element.get('name') == 'cover':
111 return element.get('content')
112 else:
113 return None