def read_pdb_metadata(filename, metadata=None): if metadata is None: metadata = Metadata(None) read_file_metadata(filename, metadata) with closing(open(filename, "rb")) as stream: metadata.pdb = _parse_pdb_header(stream) return metadata
def read_opf_metadata (filename, metadata=None): if metadata is None: metadata = Metadata(OPF2) read_file_metadata(filename, metadata) with closing(open(filename, 'r')) as stream: metadata.opf = parse_opf_xml(stream.read()) return metadata
def read_ztxt_metadata(filename, metadata=None): if metadata is None: metadata = Metadata(PDB_GUTENPALM) read_pdb_metadata(filename, metadata) offset, length = metadata.pdb.records[0] with closing(open(filename, "rb")) as stream: stream.seek(offset) raw = stream.read(length) metadata.ztxt = _parse_ztxt_header(raw) return metadata
def read_plucker_metadata(filename, metadata=None): if metadata is None: metadata = Metadata(PDB_PLUCKER) read_pdb_metadata(filename, metadata) offset, length = metadata.pdb.records[0] with closing(open(filename, "rb")) as stream: stream.seek(offset) raw = stream.read(length) metadata.plucker = _parse_plucker_header(raw) return metadata
def read_mobi_metadata (filename, metadata=None): if metadata is None: metadata = Metadata(MOBI) read_pdb_metadata(filename, metadata) if metadata.pdb.num_records < 2: # No mobi header record !? return metadata offset, length = metadata.pdb.records[0] with closing(open(filename, 'rb')) as stream: stream.seek(offset) raw = stream.read(length) metadata.mobi = _parse_mobi_header(raw) return metadata
def read_epub_metadata (filename, metadata=None): if metadata is None: metadata = Metadata(EPUB2) read_file_metadata(filename, metadata) reader = zip_reader(filename) try: container = _parse_container_xml(reader(CONTAINER_PATH)) except KeyError: raise EPubException('missing OCF container.xml') try: metadata.opf = parse_opf_xml(reader(container[OPF2.mimetype])) except KeyError: raise EPubException('missing OPF package file') return metadata
def read_ereader_metadata(filename, metadata=None): if metadata is None: metadata = Metadata(PDB_EREADER) read_pdb_metadata(filename, metadata) offset, length = metadata.pdb.records[0] with closing(open(filename, "rb")) as stream: stream.seek(offset) raw = stream.read(length) header_size = len(raw) if header_size == 132: metadata.ereader = _parse_ereader_header132(raw) elif header_size in (116, 202): metadata.ereader = _parse_ereader_header202(raw) else: raise EReaderException("Size mismatch. eReader header record size %s bytes is not supported" % header_size) return metadata
def read_file_metadata (filename, metadata=None): if metadata is None: metadata = Metadata(None) metadata.file_status = os.stat(filename) return metadata