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
0 | import os | |
1 | 0 | import xml.etree.ElementTree as etree |
2 | 1 | |
3 | 2 | |
4 | 3 | class EpubInfo(): |
5 | 4 | |
6 | #TODO: Cover the entire DC range | |
5 | # TODO: Cover the entire DC range | |
7 | 6 | |
8 | 7 | def __init__(self, opffile): |
9 | 8 | self._tree = etree.parse(opffile) |
10 | 9 | self._root = self._tree.getroot() |
11 | 10 | self._e_metadata = self._root.find( |
12 | '{http://www.idpf.org/2007/opf}metadata') | |
11 | '{http://www.idpf.org/2007/opf}metadata') | |
13 | 12 | |
14 | 13 | self.title = self._get_title() |
15 | 14 | self.creator = self._get_creator() |
19 | 18 | self.rights = self._get_rights() |
20 | 19 | self.identifier = self._get_identifier() |
21 | 20 | self.language = self._get_language() |
21 | self.summary = self._get_description() | |
22 | self.cover_image = self._get_cover_image() | |
22 | 23 | |
23 | 24 | def _get_data(self, tagname): |
24 | 25 | element = self._e_metadata.find(tagname) |
32 | 33 | |
33 | 34 | return ret |
34 | 35 | |
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 | ||
35 | 45 | def _get_creator(self): |
36 | 46 | try: |
37 | 47 | ret = self._get_data( |
38 | './/{http://purl.org/dc/elements/1.1/}creator') | |
48 | './/{http://purl.org/dc/elements/1.1/}creator') | |
39 | 49 | except AttributeError: |
40 | 50 | return None |
41 | 51 | return ret |
42 | 52 | |
43 | 53 | def _get_date(self): |
44 | #TODO: iter | |
54 | # TODO: iter | |
45 | 55 | try: |
46 | 56 | ret = self._get_data('.//{http://purl.org/dc/elements/1.1/}date') |
47 | 57 | except AttributeError: |
66 | 76 | return ret |
67 | 77 | |
68 | 78 | def _get_identifier(self): |
69 | #TODO: iter | |
79 | # TODO: iter | |
70 | 80 | element = self._e_metadata.find( |
71 | './/{http://purl.org/dc/elements/1.1/}identifier') | |
81 | './/{http://purl.org/dc/elements/1.1/}identifier') | |
72 | 82 | |
73 | 83 | if element is not None: |
74 | 84 | return {'id': element.get('id'), 'value': element.text} |
78 | 88 | def _get_language(self): |
79 | 89 | try: |
80 | 90 | ret = self._get_data( |
81 | './/{http://purl.org/dc/elements/1.1/}language') | |
91 | './/{http://purl.org/dc/elements/1.1/}language') | |
82 | 92 | except AttributeError: |
83 | 93 | return None |
84 | 94 | |
94 | 104 | return None |
95 | 105 | |
96 | 106 | 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 |