Fix bug #3424: Load defaults and book specific options in GUI bulk convert.

This commit is contained in:
John Schember 2009-09-07 10:34:36 -04:00
parent c491182921
commit 6d585f3090

View File

@ -18,6 +18,8 @@ from calibre.gui2.convert.single import Config as SingleConfig
from calibre.gui2.convert.bulk import BulkConfig from calibre.gui2.convert.bulk import BulkConfig
from calibre.customize.conversion import OptionRecommendation from calibre.customize.conversion import OptionRecommendation
from calibre.utils.config import prefs from calibre.utils.config import prefs
from calibre.ebooks.conversion.config import GuiRecommendations, \
load_defaults, load_specifics, save_specifics
def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format=None): def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format=None):
changed = False changed = False
@ -56,7 +58,6 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format
desc = _('Convert book %d of %d (%s)') % (i + 1, total, repr(mi.title)) desc = _('Convert book %d of %d (%s)') % (i + 1, total, repr(mi.title))
recs = cPickle.loads(d.recommendations) recs = cPickle.loads(d.recommendations)
args = [in_file, out_file.name, recs]
if d.opf_file is not None: if d.opf_file is not None:
recs.append(('read_metadata_from_opf', d.opf_file.name, recs.append(('read_metadata_from_opf', d.opf_file.name,
OptionRecommendation.HIGH)) OptionRecommendation.HIGH))
@ -65,6 +66,7 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format
recs.append(('cover', d.cover_file.name, recs.append(('cover', d.cover_file.name,
OptionRecommendation.HIGH)) OptionRecommendation.HIGH))
temp_files.append(d.cover_file) temp_files.append(d.cover_file)
args = [in_file, out_file.name, recs]
temp_files.append(out_file) temp_files.append(out_file)
jobs.append(('gui_convert', args, desc, d.output_format.upper(), book_id, temp_files)) jobs.append(('gui_convert', args, desc, d.output_format.upper(), book_id, temp_files))
@ -101,7 +103,7 @@ def convert_bulk_ebook(parent, db, book_ids, out_format=None):
return jobs, changed, bad return jobs, changed, bad
output_format = d.output_format output_format = d.output_format
recs = cPickle.loads(d.recommendations) user_recs = cPickle.loads(d.recommendations)
book_ids = convert_existing(parent, db, book_ids, output_format) book_ids = convert_existing(parent, db, book_ids, output_format)
for i, book_id in enumerate(book_ids): for i, book_id in enumerate(book_ids):
@ -119,7 +121,17 @@ def convert_bulk_ebook(parent, db, book_ids, out_format=None):
out_file.close() out_file.close()
temp_files = [] temp_files = []
lrecs = list(recs) combined_recs = GuiRecommendations()
default_recs = load_defaults('%s_input' % d.input_format)
specific_recs = load_specifics(db, book_id)
for key in default_recs:
combined_recs[key] = default_recs[key]
for key in specific_recs:
combined_recs[key] = specific_recs[key]
for item in user_recs:
combined_recs[item[0]] = item[1]
save_specifics(db, book_id, combined_recs)
lrecs = list(combined_recs.to_recommendations())
if d.opf_file is not None: if d.opf_file is not None:
lrecs.append(('read_metadata_from_opf', d.opf_file.name, lrecs.append(('read_metadata_from_opf', d.opf_file.name,