""" Conversion to EPUB. """ from ebook_converter.utils.zipfile import ZipFile, ZIP_STORED __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' def rules(stylesheets): for s in stylesheets: if hasattr(s, 'cssText'): for r in s: if r.type == r.STYLE_RULE: yield r def simple_container_xml(opf_path, extra_entries=''): return '''\ {extra_entries} '''.format(opf_path, extra_entries=extra_entries) def initialize_container(path_to_container, opf_name='metadata.opf', extra_entries=[]): ''' Create an empty EPUB document, with a default skeleton. ''' rootfiles = '' for path, mimetype, _ in extra_entries: rootfiles += ''.format( path, mimetype) CONTAINER = simple_container_xml(opf_name, rootfiles).encode('utf-8') zf = ZipFile(path_to_container, 'w') zf.writestr('mimetype', b'application/epub+zip', compression=ZIP_STORED) zf.writestr('META-INF/', b'', 0o755) zf.writestr('META-INF/container.xml', CONTAINER) for path, _, data in extra_entries: zf.writestr(path, data) return zf