mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-31 14:33:54 -04:00
Fix eReader metadata reading.
This commit is contained in:
parent
e4ee664bb3
commit
3f92a07918
@ -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')
|
||||||
|
@ -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):
|
||||||
|
@ -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)]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user