diff --git a/src/libprs500/ebooks/metadata/__init__.py b/src/libprs500/ebooks/metadata/__init__.py index cd4111b255..47a96f06b5 100644 --- a/src/libprs500/ebooks/metadata/__init__.py +++ b/src/libprs500/ebooks/metadata/__init__.py @@ -75,7 +75,7 @@ class MetaInformation(object): self.rating = None if not mi else mi.rating self.isbn = None if not mi else mi.isbn self.tags = [] if not mi else mi.tags - self.cover_data = (None, None) if not mi else mi.cover_data #(extension, data) + self.cover_data = mi.cover_data if (mi and hasattr(mi, 'cover_data')) else (None, None) def smart_update(self, mi): @@ -100,7 +100,7 @@ class MetaInformation(object): self.tags += mi.tags self.tags = list(set(self.tags)) - if mi.cover_data[0] is not None: + if hasattr(mi, 'cover_data') and mi.cover_data[0] is not None: self.cover_data = mi.cover_data diff --git a/src/libprs500/ebooks/metadata/meta.py b/src/libprs500/ebooks/metadata/meta.py index ebb4b0d527..05c043bd2f 100644 --- a/src/libprs500/ebooks/metadata/meta.py +++ b/src/libprs500/ebooks/metadata/meta.py @@ -107,13 +107,19 @@ def metadata_from_filename(name, pat=None): def libprs_metadata(name): if os.path.basename(name) != 'metadata.opf': name = os.path.join(os.path.dirname(name), 'metadata.opf') + name = os.path.abspath(name) if os.access(name, os.R_OK): - print name - name = os.path.abspath(name) f = open(name, 'rb') opf = OPFReader(f, os.path.dirname(name)) try: if opf.libprs_id is not None: - return MetaInformation(opf, None) + mi = MetaInformation(opf, None) + if hasattr(opf, 'cover') and opf.cover: + cpath = os.path.join(os.path.dirname(name), opf.cover) + if os.access(cpath, os.R_OK): + fmt = cpath.rpartition('.')[-1] + data = open(cpath, 'rb').read() + mi.cover_data = (fmt, data) + return mi except: pass \ No newline at end of file diff --git a/src/libprs500/ebooks/metadata/opf.py b/src/libprs500/ebooks/metadata/opf.py index 05283b211a..73cc801d9d 100644 --- a/src/libprs500/ebooks/metadata/opf.py +++ b/src/libprs500/ebooks/metadata/opf.py @@ -536,6 +536,7 @@ class OPFReader(OPF): self.manifest = Manifest(self.soup, dir) self.spine = Spine(self.soup, self.manifest) self.toc = TOC(self, dir) + self.cover_data = (None, None) class OPFCreator(OPF):