mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Refactor polishing code so it can be used from within Tweak Book
This commit is contained in:
parent
e00615d89d
commit
45edfa442c
@ -119,65 +119,68 @@ def update_metadata(ebook, new_opf):
|
||||
stream.truncate()
|
||||
stream.write(opf.render())
|
||||
|
||||
def polish(file_map, opts, log, report):
|
||||
def polish_one(ebook, opts, report):
|
||||
rt = lambda x: report('\n### ' + x)
|
||||
jacket = None
|
||||
|
||||
if opts.subset or opts.embed:
|
||||
stats = StatsCollector(ebook, do_embed=opts.embed)
|
||||
|
||||
if opts.opf:
|
||||
rt(_('Updating metadata'))
|
||||
update_metadata(ebook, opts.opf)
|
||||
jacket = find_existing_jacket(ebook)
|
||||
if jacket is not None:
|
||||
replace_jacket(ebook, jacket)
|
||||
report(_('Updated metadata jacket'))
|
||||
report(_('Metadata updated\n'))
|
||||
|
||||
if opts.cover:
|
||||
rt(_('Setting cover'))
|
||||
set_cover(ebook, opts.cover, report)
|
||||
report('')
|
||||
|
||||
if opts.jacket:
|
||||
rt(_('Inserting metadata jacket'))
|
||||
if jacket is None:
|
||||
if add_or_replace_jacket(ebook):
|
||||
report(_('Existing metadata jacket replaced'))
|
||||
else:
|
||||
report(_('Metadata jacket inserted'))
|
||||
else:
|
||||
report(_('Existing metadata jacket replaced'))
|
||||
report('')
|
||||
|
||||
if opts.remove_jacket:
|
||||
rt(_('Removing metadata jacket'))
|
||||
if remove_jacket(ebook):
|
||||
report(_('Metadata jacket removed'))
|
||||
else:
|
||||
report(_('No metadata jacket found'))
|
||||
report('')
|
||||
|
||||
if opts.smarten_punctuation:
|
||||
rt(_('Smartening punctuation'))
|
||||
smarten_punctuation(ebook, report)
|
||||
report('')
|
||||
|
||||
if opts.embed:
|
||||
rt(_('Embedding referenced fonts'))
|
||||
embed_all_fonts(ebook, stats, report)
|
||||
report('')
|
||||
|
||||
if opts.subset:
|
||||
rt(_('Subsetting embedded fonts'))
|
||||
subset_all_fonts(ebook, stats.font_stats, report)
|
||||
report('')
|
||||
|
||||
|
||||
def polish(file_map, opts, log, report):
|
||||
st = time.time()
|
||||
for inbook, outbook in file_map.iteritems():
|
||||
report(_('## Polishing: %s')%(inbook.rpartition('.')[-1].upper()))
|
||||
ebook = get_container(inbook, log)
|
||||
jacket = None
|
||||
|
||||
if opts.subset or opts.embed:
|
||||
stats = StatsCollector(ebook, do_embed=opts.embed)
|
||||
|
||||
if opts.opf:
|
||||
rt(_('Updating metadata'))
|
||||
update_metadata(ebook, opts.opf)
|
||||
jacket = find_existing_jacket(ebook)
|
||||
if jacket is not None:
|
||||
replace_jacket(ebook, jacket)
|
||||
report(_('Updated metadata jacket'))
|
||||
report(_('Metadata updated\n'))
|
||||
|
||||
if opts.cover:
|
||||
rt(_('Setting cover'))
|
||||
set_cover(ebook, opts.cover, report)
|
||||
report('')
|
||||
|
||||
if opts.jacket:
|
||||
rt(_('Inserting metadata jacket'))
|
||||
if jacket is None:
|
||||
if add_or_replace_jacket(ebook):
|
||||
report(_('Existing metadata jacket replaced'))
|
||||
else:
|
||||
report(_('Metadata jacket inserted'))
|
||||
else:
|
||||
report(_('Existing metadata jacket replaced'))
|
||||
report('')
|
||||
|
||||
if opts.remove_jacket:
|
||||
rt(_('Removing metadata jacket'))
|
||||
if remove_jacket(ebook):
|
||||
report(_('Metadata jacket removed'))
|
||||
else:
|
||||
report(_('No metadata jacket found'))
|
||||
report('')
|
||||
|
||||
if opts.smarten_punctuation:
|
||||
rt(_('Smartening punctuation'))
|
||||
smarten_punctuation(ebook, report)
|
||||
report('')
|
||||
|
||||
if opts.embed:
|
||||
rt(_('Embedding referenced fonts'))
|
||||
embed_all_fonts(ebook, stats, report)
|
||||
report('')
|
||||
|
||||
if opts.subset:
|
||||
rt(_('Subsetting embedded fonts'))
|
||||
subset_all_fonts(ebook, stats.font_stats, report)
|
||||
report('')
|
||||
|
||||
polish_one(ebook, opts, report)
|
||||
ebook.commit(outbook)
|
||||
report('-'*70)
|
||||
report(_('Polishing took: %.1f seconds')%(time.time()-st))
|
||||
@ -204,6 +207,15 @@ def gui_polish(data):
|
||||
log(msg)
|
||||
return '\n\n'.join(report)
|
||||
|
||||
def tweak_polish(container, actions):
|
||||
opts = ALL_OPTS.copy()
|
||||
opts.update(actions)
|
||||
O = namedtuple('Options', ' '.join(ALL_OPTS.iterkeys()))
|
||||
opts = O(**opts)
|
||||
report = []
|
||||
polish_one(container, opts, report.append)
|
||||
return report
|
||||
|
||||
def option_parser():
|
||||
from calibre.utils.config import OptionParser
|
||||
USAGE = '%prog [options] input_file [output_file]\n\n' + re.sub(
|
||||
|
Loading…
x
Reference in New Issue
Block a user