[mobi] not needed cover lines removed - epub intermediate file provides required...
authorRobert Błaut <listy@blaut.biz>
Fri, 28 Mar 2014 21:50:30 +0000 (22:50 +0100)
committerRobert Błaut <listy@blaut.biz>
Fri, 28 Mar 2014 21:50:30 +0000 (22:50 +0100)
librarian/mobi.py

index 3c4c949..82ff343 100644 (file)
@@ -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)