X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/37e7d9e4f5de0efd1f2d1568d8a455905843cc80..eae370b75207e1dc15f5f3f7ee7a402c7721d9a8:/src/librarian/builders/mobi.py diff --git a/src/librarian/builders/mobi.py b/src/librarian/builders/mobi.py new file mode 100644 index 0000000..19b5036 --- /dev/null +++ b/src/librarian/builders/mobi.py @@ -0,0 +1,45 @@ +import os +import six +import subprocess +from tempfile import NamedTemporaryFile +from librarian import functions, get_resource, OutputFile +from librarian.hyphenator import Hyphenator +from .epub import EpubBuilder + + +class MobiBuilder(EpubBuilder): + file_extension = 'mobi' + isbn_field = 'isbn_mobi' + + def build(self, document, use_kindlegen=False, converter_path=None, **kwargs): + bibl_lng = document.meta.language + short_lng = functions.lang_code_3to2(bibl_lng) + try: + self.hyphenator = Hyphenator(get_resource('res/hyph-dictionaries/hyph_' + + short_lng + '.dic')) + except: + pass + + epub = super().build(document, **kwargs) + + devnull = open("/dev/null", 'w') + gen_kwargs = {"stdout": devnull, "stderr": devnull} + + output_file = NamedTemporaryFile(prefix='librarian', suffix='.mobi', + delete=False) + output_file.close() + + if use_kindlegen: + output_file_basename = os.path.basename(output_file.name) + subprocess.check_call([converter_path or 'kindlegen', + '-c2', epub.get_filename(), + '-o', output_file_basename], **gen_kwargs) + else: + subprocess.check_call([converter_path or 'ebook-convert', + epub.get_filename(), + output_file.name, '--no-inline-toc', + '--mobi-file-type=both', + '--mobi-ignore-margins', + ], **gen_kwargs) + return OutputFile.from_filename(output_file.name) +