def convert(self, oeb, output_path, input_plugin, opts, log): from calibre.ebooks.mobi.writer2.resources import Resources from calibre.ebooks.mobi.writer8.main import create_kf8_book from calibre.ebooks.mobi.writer8.cleanup import remove_duplicate_anchors self.oeb, self.opts, self.log = oeb, opts, log opts.mobi_periodical = self.is_periodical passthrough = getattr(opts, 'mobi_passthrough', False) remove_duplicate_anchors(oeb) resources = Resources(self.oeb, self.opts, self.is_periodical, add_fonts=True, process_images=False) if not passthrough: remove_html_cover(self.oeb, self.log) # Split on pagebreaks so that the resulting KF8 is faster to load from calibre.ebooks.oeb.transforms.split import Split Split()(self.oeb, self.opts) kf8 = create_kf8_book(self.oeb, self.opts, resources, for_joint=False) kf8.write(output_path) extract_mobi(output_path, opts)
def convert(self, oeb, output_path, input_plugin, opts, log): from calibre.ebooks.mobi.writer2.resources import Resources self.log, self.opts, self.oeb = log, opts, oeb mobi_type = opts.mobi_file_type if self.is_periodical: mobi_type = 'old' # Amazon does not support KF8 periodicals create_kf8 = mobi_type in ('new', 'both') remove_html_cover(self.oeb, self.log) resources = Resources(oeb, opts, self.is_periodical, add_fonts=create_kf8) self.check_for_periodical() if create_kf8: from calibre.ebooks.mobi.writer8.cleanup import remove_duplicate_anchors remove_duplicate_anchors(self.oeb) # Split on pagebreaks so that the resulting KF8 is faster to load from calibre.ebooks.oeb.transforms.split import Split Split()(self.oeb, self.opts) kf8 = self.create_kf8(resources, for_joint=mobi_type == 'both') if create_kf8 else None if mobi_type == 'new': kf8.write(output_path) extract_mobi(output_path, opts) return self.log('Creating MOBI 6 output') self.write_mobi(input_plugin, output_path, kf8, resources)
def convert(self, oeb, output_path, opts, log): from calibre.ebooks.mobi.writer2.resources import Resources self.log, self.opts, self.oeb = log, opts, oeb mobi_type = opts.mobi_file_type if self.is_periodical: mobi_type = 'old' # Amazon does not support KF8 periodicals create_kf8 = mobi_type in ('new', 'both') remove_html_cover(self.oeb, self.log) resources = Resources(oeb, opts, self.is_periodical, add_fonts=create_kf8, process_images=opts.process_images) self.check_for_periodical() if create_kf8: # Split on pagebreaks so that the resulting KF8 works better with # calibre's viewer, which does not support CSS page breaks from calibre.ebooks.oeb.transforms.split import Split Split()(self.oeb, self.opts) kf8 = self.create_kf8(resources, for_joint=mobi_type == 'both') if create_kf8 else None if mobi_type == 'new': kf8.write(output_path) extract_mobi(output_path, opts) return self.log.info('Creating MOBI 6 output') self.write_mobi(output_path, kf8, resources)
def convert(self, oeb, output_path, input_plugin, opts, log): from calibre.ebooks.mobi.writer2.resources import Resources from calibre.ebooks.mobi.writer8.main import create_kf8_book self.oeb, self.opts, self.log = oeb, opts, log opts.mobi_periodical = self.is_periodical passthrough = getattr(opts, 'mobi_passthrough', False) resources = Resources(self.oeb, self.opts, self.is_periodical, add_fonts=True, process_images=False) if not passthrough: remove_html_cover(self.oeb, self.log) # Split on pagebreaks so that the resulting KF8 works better with # calibre's viewer, which does not support CSS page breaks from calibre.ebooks.oeb.transforms.split import Split Split()(self.oeb, self.opts) kf8 = create_kf8_book(self.oeb, self.opts, resources, for_joint=False) kf8.write(output_path) extract_mobi(output_path, opts)
def opf_to_book(opf, outpath, container): from calibre.ebooks.conversion.plumber import Plumber, create_oebbook class Item(Manifest.Item): def _parse_css(self, data): # The default CSS parser used by oeb.base inserts the h namespace # and resolves all @import rules. We dont want that. return container.parse_css(data) def specialize(oeb): oeb.manifest.Item = Item plumber = Plumber(opf, outpath, container.log) plumber.setup_options() class Reader(OEBReader): def _metadata_from_opf(self, opf): for e in xpath(opf, 'o2:metadata//o2:meta'): if e.attrib.get('name') == 'original-resolution': comic_book_exth_values['original-resolution'] = e.attrib.get('content', '660x800') return OEBReader._metadata_from_opf(self, opf) oeb = create_oebbook(container.log, opf, plumber.opts, specialize=specialize, reader=Reader) fixup_metadata(oeb) set_cover_image(oeb) plumber.opts.dont_compress = True plumber.opts.toc_title = None plumber.opts.mobi_toc_at_start = False plumber.opts.no_inline_toc = True plumber.opts.mobi_periodical = False res = Resources(oeb, plumber.opts, False, process_images=False) if path.splitext(outpath)[1] != '.azw3': plumber.run() else: book = create_kf8_book(oeb, plumber.opts, res) book.opts.prefer_author_sort = False book.opts.share_not_sync = False print ('\nWriting out: {}\n'.format(outpath)) book.write(outpath)