diff --git a/src/calibre/ebooks/epub/from_html.py b/src/calibre/ebooks/epub/from_html.py index fb37c25893..3271a0d421 100644 --- a/src/calibre/ebooks/epub/from_html.py +++ b/src/calibre/ebooks/epub/from_html.py @@ -224,6 +224,10 @@ def convert(htmlfile, opts, notification=None): opts.override_css = open(opts.override_css, 'rb').read().decode(preferred_encoding, 'replace') except: opts.override_css = opts.override_css.decode(preferred_encoding, 'replace') + if opts.from_opf: + opts.from_opf = os.path.abspath(opts.from_opf) + if opts.from_ncx: + opts.from_ncx = os.path.abspath(opts.from_ncx) if htmlfile.lower().endswith('.opf'): opf = OPF(htmlfile, os.path.dirname(os.path.abspath(htmlfile))) filelist = opf_traverse(opf, verbose=opts.verbose, encoding=opts.encoding) @@ -233,7 +237,7 @@ def convert(htmlfile, opts, notification=None): if htmlfile is None: raise ValueError('Could not find suitable file to convert.') filelist = get_filelist(htmlfile, opts)[1] - mi = MetaInformation(opf) + mi = merge_metadata(None, opf, opts) else: opf, filelist = get_filelist(htmlfile, opts) mi = merge_metadata(htmlfile, opf, opts) diff --git a/src/calibre/ebooks/html.py b/src/calibre/ebooks/html.py index 9fd0f348b0..64168823d5 100644 --- a/src/calibre/ebooks/html.py +++ b/src/calibre/ebooks/html.py @@ -906,11 +906,12 @@ def merge_metadata(htmlfile, opf, opts): ''' if opf: mi = MetaInformation(opf) - else: + elif htmlfile: try: mi = get_metadata(open(htmlfile, 'rb'), 'html') except: mi = MetaInformation(None, None) + if opts.from_opf is not None and os.access(opts.from_opf, os.R_OK): mi.smart_update(OPF(open(opts.from_opf, 'rb'), os.path.abspath(os.path.dirname(opts.from_opf)))) for attr in ('title', 'authors', 'publisher', 'tags', 'comments'):