Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
def read_file_metadata (filename, metadata=None):
    if metadata is None:
        metadata = Metadata(None)

    metadata.file_status = os.stat(filename)
    return metadata