Fix eReader metadata reading.

This commit is contained in:
John Schember 2009-05-22 06:26:57 -04:00
parent e4ee664bb3
commit 3f92a07918
3 changed files with 19 additions and 15 deletions

View File

@ -24,19 +24,22 @@ def get_metadata(stream, extract_cover=True):
stream.seek(0) stream.seek(0)
pheader = PdbHeaderReader(stream) pheader = PdbHeaderReader(stream)
hr = HeaderRecord(pheader.section_data(0))
if hr.version in (2, 10) and hr.has_metadata == 1: # Only Dropbook produced 132 byte record0 files are supported
try: if len(pheader.section_data(0)) == 132:
mdata = pheader.section_data(hr.metadata_offset) hr = HeaderRecord(pheader.section_data(0))
mdata = mdata.split('\x00') if hr.version in (2, 10) and hr.has_metadata == 1:
mi.title = mdata[0] try:
mi.authors = [mdata[1]] mdata = pheader.section_data(hr.metadata_offset)
mi.publisher = mdata[3]
mi.isbn = mdata[4] mdata = mdata.split('\x00')
except: mi.title = mdata[0]
pass mi.authors = [mdata[1]]
mi.publisher = mdata[3]
mi.isbn = mdata[4]
except:
pass
if not mi.title: if not mi.title:
mi.title = pheader.title if pheader.title else _('Unknown') mi.title = pheader.title if pheader.title else _('Unknown')

View File

@ -38,7 +38,6 @@ def get_metadata(stream, extract_cover=True):
if MetadataReader is None: if MetadataReader is None:
return MetaInformation(pheader.title, [_('Unknown')]) return MetaInformation(pheader.title, [_('Unknown')])
return MetadataReader(stream, extract_cover) return MetadataReader(stream, extract_cover)
def set_metadata(stream, mi): def set_metadata(stream, mi):

View File

@ -11,7 +11,6 @@ import os
import struct import struct
from calibre import CurrentDir from calibre import CurrentDir
from calibre.ebooks.metadata import MetaInformation
from calibre.ebooks.metadata.opf2 import OPFCreator from calibre.ebooks.metadata.opf2 import OPFCreator
from calibre.ebooks.pml.pmlconverter import pml_to_html from calibre.ebooks.pml.pmlconverter import pml_to_html
from calibre.ebooks.compression.palmdoc import decompress_doc from calibre.ebooks.compression.palmdoc import decompress_doc
@ -48,6 +47,9 @@ class Reader202(FormatReader):
if self.header_record.version != 4: if self.header_record.version != 4:
raise EreaderError('Unknown book version %i.' % self.header_record.version) raise EreaderError('Unknown book version %i.' % self.header_record.version)
from calibre.ebooks.metadata.pdb import get_metadata
self.mi = get_metadata(stream, False)
def section_data(self, number): def section_data(self, number):
return self.sections[number] return self.sections[number]
@ -114,7 +116,7 @@ class Reader202(FormatReader):
def create_opf(self, output_dir, images): def create_opf(self, output_dir, images):
with CurrentDir(output_dir): with CurrentDir(output_dir):
opf = OPFCreator(output_dir, MetaInformation(_('Unknown'), _('Unknown'))) opf = OPFCreator(output_dir, self.mi)
manifest = [('index.html', None)] manifest = [('index.html', None)]