From fbae8b47bdeb67d2ec1685d585907bf1a1a1ddc2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Robert=20B=C5=82aut?= Date: Fri, 28 Mar 2014 22:50:30 +0100 Subject: [PATCH] [mobi] not needed cover lines removed - epub intermediate file provides required cover; added support for second optional conversion tool - kindlegen --- librarian/mobi.py | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/librarian/mobi.py b/librarian/mobi.py index 3c4c949..82ff343 100644 --- a/librarian/mobi.py +++ b/librarian/mobi.py @@ -13,8 +13,8 @@ from librarian.cover import DefaultEbookCover from librarian import get_resource -def transform(wldoc, verbose=False, - sample=None, cover=None, flags=None): +def transform(wldoc, verbose=False, sample=None, cover=None, + use_kindlegen=False, flags=None): """ produces a MOBI file wldoc: a WLDocument @@ -27,25 +27,12 @@ def transform(wldoc, verbose=False, del wldoc book_info = document.book_info - # provide a cover by default - if not cover: - cover = DefaultEbookCover - cover_file = NamedTemporaryFile(suffix='.png', delete=False) - bound_cover = cover(book_info) - bound_cover.save(cover_file) - - if bound_cover.uses_dc_cover: - if document.book_info.cover_by: - document.edoc.getroot().set('data-cover-by', document.book_info.cover_by) - if document.book_info.cover_source: - document.edoc.getroot().set('data-cover-source', document.book_info.cover_source) - if not flags: flags = [] - flags = list(flags) + ['with-full-fonts'] - epub = document.as_epub(verbose=verbose, sample=sample, html_toc=True, - flags=flags, style=get_resource('epub/style.css')) - + flags = list(flags) + + epub = document.as_epub(verbose=verbose, sample=sample, + html_toc=True, cover=True, flags=flags) if verbose: kwargs = {} else: @@ -54,7 +41,18 @@ def transform(wldoc, verbose=False, output_file = NamedTemporaryFile(prefix='librarian', suffix='.mobi', delete=False) output_file.close() - subprocess.check_call(['ebook-convert', epub.get_filename(), output_file.name, - '--no-inline-toc', '--mobi-file-type=both', '--subset-embedded-fonts', '--mobi-ignore-margins', '--cover=%s' % cover_file.name], **kwargs) - os.unlink(cover_file.name) + + if use_kindlegen: + output_file_basename = os.path.basename(output_file.name) + subprocess.check_call( + ['kindlegen', '-c2', epub.get_filename(), '-o', output_file_basename], + **kwargs + ) + else: + subprocess.check_call( + ['ebook-convert', epub.get_filename(), output_file.name, + '--no-inline-toc', + '--mobi-file-type=both', + '--mobi-ignore-margins'], **kwargs + ) return OutputFile.from_filename(output_file.name) -- 2.20.1