Speed up reading of metadata from EPUB files on the device. Also use poppler to read PDF metadata from device files.

This commit is contained in:
Kovid Goyal 2009-08-06 08:51:31 -06:00
parent 966b915787
commit 33604318cb
4 changed files with 15 additions and 1 deletions

View File

@ -76,7 +76,9 @@ class EPUBMetadataReader(MetadataReaderPlugin):
description = _('Read metadata from %s files')%'EPUB'
def get_metadata(self, stream, ftype):
from calibre.ebooks.metadata.epub import get_metadata
from calibre.ebooks.metadata.epub import get_metadata, get_quick_metadata
if self.quick:
return get_quick_metadata(stream)
return get_metadata(stream)
class FB2MetadataReader(MetadataReaderPlugin):

View File

@ -130,6 +130,9 @@ def get_metadata(stream, extract_cover=True):
traceback.print_exc()
return mi
def get_quick_metadata(stream):
return get_metadata(stream, False)
def set_metadata(stream, mi):
stream.seek(0)
reader = OCFZipReader(stream, root=os.getcwdu())

View File

@ -22,6 +22,11 @@ from calibre.utils.podofo import get_metadata as podofo_get_metadata, \
from calibre.utils.poppler import get_metadata as get_metadata_poppler, NotAvailable
def get_quick_metadata(stream):
try:
return get_metadata_poppler(stream, False)
except NotAvailable:
pass
return get_metadata_pypdf(stream)
raw = stream.read()
mi = get_metadata_quick(raw)

View File

@ -914,8 +914,12 @@ class Manifest(object):
p.remove(a)
if a.tail:
if idx <= 0:
if p.text is None:
p.text = ''
p.text += a.tail
else:
if p[idx].tail is None:
p[idx].tail = ''
p[idx].tail += a.tail
return data