def __init__(self, ebook_root, outdir, op, plugin_dir, plugin_name, debug=False): self._debug = debug self.ebook_root = pathof(ebook_root) # plugins and plugin containers can get name and user plugin dir self.plugin_dir = pathof(plugin_dir) self.plugin_name = plugin_name self.outdir = pathof(outdir) # dictionaries used to map opf manifest information self.id_to_href = {} self.id_to_mime = {} self.href_to_id = {} self.spine_ppd = None self.spine = [] self.guide = [] self.package_tag = '' self.metadataxml = '' self.op = op if self.op is not None: # copy in data from parsing of initial opf self.opfname = op.opfname self.id_to_href = op.get_manifest_id_to_href_dict().copy() self.id_to_mime = op.get_manifest_id_to_mime_dict().copy() self.href_to_id = op.get_href_to_manifest_id_dict().copy() self.spine_ppd = op.get_spine_ppd() self.spine = op.get_spine() self.guide = op.get_guide() self.package_tag = op.get_package_tag() self.metadataxml = op.get_metadataxml() self.other = [] # non-manifest file information self.id_to_filepath = {} self.modified = {} self.added = [] self.deleted = [] # walk the ebook directory tree building up initial list of # all unmanifested (other) files for filepath in unipath.walk(ebook_root): book_href = filepath.replace(os.sep, "/") # OS X file names and paths use NFD form. The EPUB # spec requires all text including filenames to be in NFC form. book_href = unicodedata.normalize('NFC', book_href) # if book_href file in manifest convert to manifest id id = None if book_href.startswith('OEBPS/'): href = book_href[6:] id = self.href_to_id.get(href, None) if id is None: self.other.append(book_href) self.id_to_filepath[book_href] = filepath else: self.id_to_filepath[id] = filepath
def epub_zip_up_book_contents(ebook_path, epub_filepath): outzip = zipfile.ZipFile(pathof(epub_filepath), 'w') files = unipath.walk(ebook_path) if 'mimetype' in files: outzip.write(pathof(os.path.join(ebook_path, 'mimetype')), pathof('mimetype'), zipfile.ZIP_STORED) else: raise Exception('mimetype file is missing') files.remove('mimetype') for file in files: filepath = os.path.join(ebook_path, file) outzip.write(pathof(filepath),pathof(file),zipfile.ZIP_DEFLATED) outzip.close()
def epub_zip_up_book_contents(ebook_path, epub_filepath): outzip = zipfile.ZipFile(pathof(epub_filepath), 'w') files = unipath.walk(ebook_path) if 'mimetype' in files: outzip.write(pathof(os.path.join(ebook_path, 'mimetype')), pathof('mimetype'), zipfile.ZIP_STORED) else: raise Exception('mimetype file is missing') files.remove('mimetype') for file in files: filepath = os.path.join(ebook_path, file) outzip.write(pathof(filepath), pathof(file), zipfile.ZIP_DEFLATED) outzip.close()
def __init__(self, ebook_root, outdir, op, plugin_dir, plugin_name, debug=False): self._debug = debug self.ebook_root = pathof(ebook_root) # plugins and plugin containers can get name and user plugin dir self.plugin_dir = pathof(plugin_dir) self.plugin_name = plugin_name self.outdir = pathof(outdir) # dictionaries used to map opf manifest information self.id_to_href = {} self.id_to_mime = {} self.href_to_id = {} self.spine_ppd = None self.spine = [] self.guide = [] self.package_tag = "" self.metadataxml = "" self.op = op if self.op is not None: # copy in data from parsing of initial opf self.opfname = op.opfname self.id_to_href = op.get_manifest_id_to_href_dict().copy() self.id_to_mime = op.get_manifest_id_to_mime_dict().copy() self.href_to_id = op.get_href_to_manifest_id_dict().copy() self.spine_ppd = op.get_spine_ppd() self.spine = op.get_spine() self.guide = op.get_guide() self.package_tag = op.get_package_tag() self.metadataxml = op.get_metadataxml() self.other = [] # non-manifest file information self.id_to_filepath = {} self.modified = {} self.added = [] self.deleted = [] # walk the ebook directory tree building up initial list of # all unmanifested (other) files for filepath in unipath.walk(ebook_root): book_href = filepath.replace(os.sep, "/") # OS X file names and paths use NFD form. The EPUB # spec requires all text including filenames to be in NFC form. book_href = unicodedata.normalize("NFC", book_href) # if book_href file in manifest convert to manifest id id = None if book_href.startswith("OEBPS/"): href = book_href[6:] id = self.href_to_id.get(href, None) if id is None: self.other.append(book_href) self.id_to_filepath[book_href] = filepath else: self.id_to_filepath[id] = filepath
def __init__(self, ebook_root, outdir, op, plugin_dir, plugin_name, debug=False): self._debug = debug self.ebook_root = pathof(ebook_root) # plugins and plugin containers can get name and user plugin dir self.plugin_dir = pathof(plugin_dir) self.plugin_name = plugin_name self.outdir = pathof(outdir) # initialize the sigil cofiguration info passed in outdir with sigil.cfg self.appdir = None self.usrsupdir = None # Location of directory containing hunspell dictionaries on Linux self.linux_hunspell_dict_dirs = [] # Sigil interface language code self.sigil_ui_lang = None # Default Sigil spell check dictionary self.sigil_spellcheck_lang = None # status of epub inside Sigil (isDirty) and CurrentFilePath of current epub file self.epub_isDirty = False self.epub_filepath = "" # File selected in Sigil's Book Browser self.selected = [] cfg = '' with open(os.path.join(self.outdir, 'sigil.cfg'), 'rb') as f: cfg = f.read().decode('utf-8') cfg = cfg.replace("\r", "") cfg_lst = cfg.split("\n") if len(cfg_lst) >= 2: self.appdir = cfg_lst.pop(0) self.usrsupdir = cfg_lst.pop(0) if not sys.platform.startswith( 'darwin') and not sys.platform.startswith('win'): self.linux_hunspell_dict_dirs = cfg_lst.pop(0).split(":") self.sigil_ui_lang = cfg_lst.pop(0) self.sigil_spellcheck_lang = cfg_lst.pop(0) self.epub_isDirty = (cfg_lst.pop(0) == "True") self.epub_filepath = cfg_lst.pop(0) self.selected = cfg_lst os.environ['SigilGumboLibPath'] = self.get_gumbo_path() # dictionaries used to map opf manifest information self.id_to_href = {} self.id_to_mime = {} self.href_to_id = {} self.id_to_props = {} self.id_to_fall = {} self.id_to_over = {} self.spine_ppd = None self.spine = [] self.guide = [] self.bindings = [] self.package_tag = None self.epub_version = None # self.metadata_attr = None # self.metadata = [] self.metadataxml = '' self.op = op if self.op is not None: # copy in data from parsing of initial opf self.opfname = op.opfname self.id_to_href = op.get_manifest_id_to_href_dict().copy() self.id_to_mime = op.get_manifest_id_to_mime_dict().copy() self.href_to_id = op.get_href_to_manifest_id_dict().copy() self.id_to_props = op.get_manifest_id_to_properties_dict().copy() self.id_to_fall = op.get_manifest_id_to_fallback_dict().copy() self.id_to_over = op.get_manifest_id_to_overlay_dict().copy() self.spine_ppd = op.get_spine_ppd() self.spine = op.get_spine() self.guide = op.get_guide() self.package_tag = op.get_package_tag() self.epub_version = op.get_epub_version() self.bindings = op.get_bindings() # self.metadata = op.get_metadata() # self.metadata_attr = op.get_metadata_attr() self.metadataxml = op.get_metadataxml() self.other = [] # non-manifest file information self.id_to_filepath = {} self.book_href_to_filepath = {} self.modified = {} self.added = [] self.deleted = [] # walk the ebook directory tree building up initial list of # all unmanifested (other) files for filepath in unipath.walk(ebook_root): book_href = filepath.replace(os.sep, "/") # OS X file names and paths use NFD form. The EPUB # spec requires all text including filenames to be in NFC form. book_href = unicodedata.normalize('NFC', book_href) # if book_href file in manifest convert to manifest id id = None if book_href.startswith('OEBPS/'): href = book_href[6:] id = self.href_to_id.get(href, None) if id is None: self.other.append(book_href) self.book_href_to_filepath[book_href] = filepath else: self.id_to_filepath[id] = filepath
def __init__(self, ebook_root, outdir, op, plugin_dir, plugin_name, debug = False): self._debug = debug self.ebook_root = pathof(ebook_root) # plugins and plugin containers can get name and user plugin dir self.plugin_dir = pathof(plugin_dir) self.plugin_name = plugin_name self.outdir = pathof(outdir) # initialize the sigil cofiguration info passed in outdir with sigil.cfg self.appdir = None self.usrsupdir = None self.selected = [] cfg = '' with open(os.path.join(self.outdir, 'sigil.cfg'), 'rb') as f: cfg = f.read().decode('utf-8') cfg = cfg.replace("\r", "") cfg_lst = cfg.split("\n") if len(cfg_lst) >= 2: self.appdir = cfg_lst.pop(0) self.usrsupdir = cfg_lst.pop(0) self.selected = cfg_lst os.environ['SigilGumboLibPath'] = self.get_gumbo_path() # dictionaries used to map opf manifest information self.id_to_href = {} self.id_to_mime = {} self.href_to_id = {} self.id_to_props = {} self.id_to_fall = {} self.id_to_over = {} self.spine_ppd = None self.spine = [] self.guide = [] self.package_tag = None self.epub_version = None # self.metadata_attr = None # self.metadata = [] self.metadataxml = '' self.op = op if self.op is not None: # copy in data from parsing of initial opf self.opfname = op.opfname self.id_to_href = op.get_manifest_id_to_href_dict().copy() self.id_to_mime = op.get_manifest_id_to_mime_dict().copy() self.href_to_id = op.get_href_to_manifest_id_dict().copy() self.id_to_props = op.get_manifest_id_to_properties_dict().copy() self.id_to_fall = op.get_manifest_id_to_fallback_dict().copy() self.id_to_over = op.get_manifest_id_to_overlay_dict().copy() self.spine_ppd = op.get_spine_ppd() self.spine = op.get_spine() self.guide = op.get_guide() self.package_tag = op.get_package_tag() self.epub_version = op.get_epub_version() # self.metadata = op.get_metadata() # self.metadata_attr = op.get_metadata_attr() self.metadataxml = op.get_metadataxml() self.other = [] # non-manifest file information self.id_to_filepath = {} self.modified = {} self.added = [] self.deleted = [] # walk the ebook directory tree building up initial list of # all unmanifested (other) files for filepath in unipath.walk(ebook_root): book_href = filepath.replace(os.sep, "/") # OS X file names and paths use NFD form. The EPUB # spec requires all text including filenames to be in NFC form. book_href = unicodedata.normalize('NFC', book_href) # if book_href file in manifest convert to manifest id id = None if book_href.startswith('OEBPS/'): href = book_href[6:] id = self.href_to_id.get(href,None) if id is None: self.other.append(book_href) self.id_to_filepath[book_href] = filepath else: self.id_to_filepath[id] = filepath
def __init__(self, ebook_root, outdir, op, plugin_dir, plugin_name, debug = False): self._debug = debug self.ebook_root = pathof(ebook_root) # plugins and plugin containers can get name and user plugin dir self.plugin_dir = pathof(plugin_dir) self.plugin_name = plugin_name self.outdir = pathof(outdir) # initialize the sigil cofiguration info passed in outdir with sigil.cfg self.appdir = None self.usrsupdir = None self.selected = [] cfg = '' with open(os.path.join(self.outdir, 'sigil.cfg'), 'rb') as f: cfg = f.read().decode('utf-8') cfg = cfg.replace("\r", "") cfg_lst = cfg.split("\n") if len(cfg_lst) >= 2: self.appdir = cfg_lst.pop(0) self.usrsupdir = cfg_lst.pop(0) self.selected = cfg_lst os.environ['SigilGumboLibPath'] = self.get_gumbo_path() # dictionaries used to map opf manifest information self.id_to_href = {} self.id_to_mime = {} self.href_to_id = {} self.id_to_props = {} self.spine_ppd = None self.spine = [] self.guide = [] self.package_tag = None # self.metadata_attr = None # self.metadata = [] self.metadataxml = '' self.op = op if self.op is not None: # copy in data from parsing of initial opf self.opfname = op.opfname self.id_to_href = op.get_manifest_id_to_href_dict().copy() self.id_to_mime = op.get_manifest_id_to_mime_dict().copy() self.href_to_id = op.get_href_to_manifest_id_dict().copy() self.id_to_props = op.get_manifest_id_to_properties_dict().copy() self.spine_ppd = op.get_spine_ppd() self.spine = op.get_spine() self.guide = op.get_guide() self.package_tag = op.get_package_tag() # self.metadata = op.get_metadata() # self.metadata_attr = op.get_metadata_attr() self.metadataxml = op.get_metadataxml() self.other = [] # non-manifest file information self.id_to_filepath = {} self.modified = {} self.added = [] self.deleted = [] # walk the ebook directory tree building up initial list of # all unmanifested (other) files for filepath in unipath.walk(ebook_root): book_href = filepath.replace(os.sep, "/") # OS X file names and paths use NFD form. The EPUB # spec requires all text including filenames to be in NFC form. book_href = unicodedata.normalize('NFC', book_href) # if book_href file in manifest convert to manifest id id = None if book_href.startswith('OEBPS/'): href = book_href[6:] id = self.href_to_id.get(href,None) if id is None: self.other.append(book_href) self.id_to_filepath[book_href] = filepath else: self.id_to_filepath[id] = filepath