mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix re-importing of cover data from a ebook that has been previously saved to disk
This commit is contained in:
parent
1697a8b535
commit
6e8f39d669
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
@ -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):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user