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.rating = None if not mi else mi.rating
self.isbn = None if not mi else mi.isbn self.isbn = None if not mi else mi.isbn
self.tags = [] if not mi else mi.tags 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): def smart_update(self, mi):
@ -100,7 +100,7 @@ class MetaInformation(object):
self.tags += mi.tags self.tags += mi.tags
self.tags = list(set(self.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 self.cover_data = mi.cover_data

View File

@ -107,13 +107,19 @@ def metadata_from_filename(name, pat=None):
def libprs_metadata(name): def libprs_metadata(name):
if os.path.basename(name) != 'metadata.opf': if os.path.basename(name) != 'metadata.opf':
name = os.path.join(os.path.dirname(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): if os.access(name, os.R_OK):
print name
name = os.path.abspath(name)
f = open(name, 'rb') f = open(name, 'rb')
opf = OPFReader(f, os.path.dirname(name)) opf = OPFReader(f, os.path.dirname(name))
try: try:
if opf.libprs_id is not None: 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: except:
pass pass

View File

@ -536,6 +536,7 @@ class OPFReader(OPF):
self.manifest = Manifest(self.soup, dir) self.manifest = Manifest(self.soup, dir)
self.spine = Spine(self.soup, self.manifest) self.spine = Spine(self.soup, self.manifest)
self.toc = TOC(self, dir) self.toc = TOC(self, dir)
self.cover_data = (None, None)
class OPFCreator(OPF): class OPFCreator(OPF):