mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Edit book: Fix extra invalid entries being generated in the manifest when editing an AZW3 file that has no images.
This commit is contained in:
parent
d1870eaba9
commit
b55e526491
@ -61,7 +61,8 @@ def reverse_tag_iter(block):
|
|||||||
|
|
||||||
class Mobi8Reader(object):
|
class Mobi8Reader(object):
|
||||||
|
|
||||||
def __init__(self, mobi6_reader, log):
|
def __init__(self, mobi6_reader, log, for_tweak=False):
|
||||||
|
self.for_tweak = for_tweak
|
||||||
self.mobi6_reader, self.log = mobi6_reader, log
|
self.mobi6_reader, self.log = mobi6_reader, log
|
||||||
self.header = mobi6_reader.book_header
|
self.header = mobi6_reader.book_header
|
||||||
self.encrypted_fonts = []
|
self.encrypted_fonts = []
|
||||||
@ -459,6 +460,20 @@ class Mobi8Reader(object):
|
|||||||
def exclude(path):
|
def exclude(path):
|
||||||
return os.path.basename(path) == 'debug-raw.html'
|
return os.path.basename(path) == 'debug-raw.html'
|
||||||
|
|
||||||
|
# If there are no images then the azw3 input plugin dumps all
|
||||||
|
# binary records as .unknown images, remove them
|
||||||
|
if self.for_tweak and os.path.exists('images') and os.path.isdir('images'):
|
||||||
|
files = os.listdir('images')
|
||||||
|
unknown = [x for x in files if x.endswith('.unknown')]
|
||||||
|
if len(files) == len(unknown):
|
||||||
|
[os.remove('images/'+f) for f in files]
|
||||||
|
|
||||||
|
if self.for_tweak:
|
||||||
|
try:
|
||||||
|
os.remove('debug-raw.html')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
opf.create_manifest_from_files_in([os.getcwdu()], exclude=exclude)
|
opf.create_manifest_from_files_in([os.getcwdu()], exclude=exclude)
|
||||||
for entry in opf.manifest:
|
for entry in opf.manifest:
|
||||||
if entry.mime_type == 'text/html':
|
if entry.mime_type == 'text/html':
|
||||||
|
@ -1022,20 +1022,9 @@ def do_explode(path, dest):
|
|||||||
mr = MobiReader(stream, default_log, None, None)
|
mr = MobiReader(stream, default_log, None, None)
|
||||||
|
|
||||||
with CurrentDir(dest):
|
with CurrentDir(dest):
|
||||||
mr = Mobi8Reader(mr, default_log)
|
mr = Mobi8Reader(mr, default_log, for_tweak=True)
|
||||||
opf = os.path.abspath(mr())
|
opf = os.path.abspath(mr())
|
||||||
obfuscated_fonts = mr.encrypted_fonts
|
obfuscated_fonts = mr.encrypted_fonts
|
||||||
# If there are no images then the azw3 input plugin dumps all
|
|
||||||
# binary records as .unknown images, remove them
|
|
||||||
if os.path.exists('images') and os.path.isdir('images'):
|
|
||||||
files = os.listdir('images')
|
|
||||||
unknown = [x for x in files if x.endswith('.unknown')]
|
|
||||||
if len(files) == len(unknown):
|
|
||||||
[os.remove('images/'+f) for f in files]
|
|
||||||
try:
|
|
||||||
os.remove('debug-raw.html')
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
return opf, obfuscated_fonts
|
return opf, obfuscated_fonts
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user