[epub] pep8
[librarian.git] / librarian / mobi.py
old mode 100755 (executable)
new mode 100644 (file)
index 1e7569b..b30c1fe
@@ -3,23 +3,24 @@
 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+
 from copy import deepcopy
 import os
 import subprocess
 from tempfile import NamedTemporaryFile
 
 from librarian import OutputFile
 from copy import deepcopy
 import os
 import subprocess
 from tempfile import NamedTemporaryFile
 
 from librarian import OutputFile
-from librarian.cover import WLCover
+from librarian.cover import DefaultEbookCover
 from librarian import get_resource
 
 
 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
     sample=n: generate sample e-book (with at least n paragraphs)
     """ produces a MOBI file
 
     wldoc: a WLDocument
     sample=n: generate sample e-book (with at least n paragraphs)
-    cover: a cover.Cover object
+    cover: a cover.Cover factory overriding default
     flags: less-advertising,
     """
 
     flags: less-advertising,
     """
 
@@ -27,34 +28,29 @@ def transform(wldoc, verbose=False,
     del wldoc
     book_info = document.book_info
 
     del wldoc
     book_info = document.book_info
 
-    # provide a cover by default
-    if not cover:
-        cover = WLCover
-    cover_file = NamedTemporaryFile(suffix='.png', delete=False)
-    c = cover(book_info)
-    c.save(cover_file)
-
-    if 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 = []
     if not flags:
         flags = []
-    flags = list(flags) + ['without-fonts']
-    epub = document.as_epub(verbose=verbose, sample=sample, html_toc=True,
-            flags=flags, style=get_resource('mobi/style.css'))
+    flags = list(flags)
 
 
+    epub = document.as_epub(verbose=verbose, sample=sample,
+                            html_toc=True, cover=True, flags=flags)
     if verbose:
         kwargs = {}
     else:
         devnull = open("/dev/null", 'w')
         kwargs = {"stdout": devnull, "stderr": devnull}
 
     if verbose:
         kwargs = {}
     else:
         devnull = open("/dev/null", 'w')
         kwargs = {"stdout": devnull, "stderr": devnull}
 
-    output_file = NamedTemporaryFile(prefix='librarian', suffix='.mobi', delete=False)
+    output_file = NamedTemporaryFile(prefix='librarian', suffix='.mobi',
+                                     delete=False)
     output_file.close()
     output_file.close()
-    subprocess.check_call(['ebook-convert', epub.get_filename(), output_file.name,
-            '--no-inline-toc', '--cover=%s' % cover_file.name], **kwargs)
-    os.unlink(cover_file.name)
-    return OutputFile.from_filename(output_file.name)
\ No newline at end of file
+
+    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)