Fix re-importing of cover data from a ebook that has been previously saved to disk

This commit is contained in:
Kovid Goyal 2008-02-16 19:07:05 +00:00
parent 1697a8b535
commit 6e8f39d669
3 changed files with 12 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -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):