def initialize(self): from calibre.customize.builtins import PDBMetadataReader from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks.conversion.plugins.pdb_input import PDBInput from calibre.ebooks.metadata.pdb import MREADER from calibre.ebooks.pdb import (IDENTITY_TO_NAME, get_reader) import calibre.ebooks.pdb if PDBMetadataReader: PDBMetadataReader.file_types.add('updb') if PDBInput: PDBInput.file_types.add('updb') if BOOK_EXTENSIONS: if 'updb' not in BOOK_EXTENSIONS: BOOK_EXTENSIONS.append('updb') if MREADER: MREADER[BPDB_IDENT] = get_metadata MREADER[UPDB_IDENT] = get_metadata if not get_reader(BPDB_IDENT): calibre.ebooks.pdb.FORMAT_READERS[BPDB_IDENT] = Reader calibre.ebooks.pdb.FORMAT_READERS[UPDB_IDENT] = Reader if IDENTITY_TO_NAME: IDENTITY_TO_NAME[BPDB_IDENT] = 'Haodoo.net' IDENTITY_TO_NAME[UPDB_IDENT] = 'Haodoo.net'
def convert(self, stream, options, file_ext, log, accelerators): from calibre.ebooks.pdb.header import PdbHeaderReader from calibre.ebooks.pdb import PDBError, IDENTITY_TO_NAME, get_reader header = PdbHeaderReader(stream) Reader = get_reader(header.ident) if Reader is None: raise PDBError('No reader available for format within container.\n Identity is %s. Book type is %s' % (header.ident, IDENTITY_TO_NAME.get(header.ident, _('Unknown')))) log.debug('Detected ebook format as: %s with identity: %s' % (IDENTITY_TO_NAME[header.ident], header.ident)) reader = Reader(header, stream, log, options) opf = reader.extract_content(os.getcwdu()) return opf