Pull from driver-dev

This commit is contained in:
Kovid Goyal 2009-05-02 18:41:20 -07:00
commit e4f1b2bd78
5 changed files with 97 additions and 4 deletions

View File

@ -171,6 +171,17 @@ class TXTMetadataReader(MetadataReaderPlugin):
from calibre.ebooks.metadata.txt import get_metadata
return get_metadata(stream)
class PDBMetadataReader(MetadataReaderPlugin):
name = 'Read PDB metadata'
file_types = set(['pdb'])
description = _('Read metadata from %s files') % 'PDB'
author = 'John Schember'
def get_metadata(self, stream, ftype):
from calibre.ebooks.metadata.pdb import get_metadata
return get_metadata(stream)
class LRXMetadataReader(MetadataReaderPlugin):
name = 'Read LRX metadata'

View File

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
'''
Read meta information from eReader pdb files.
'''
__license__ = 'GPL v3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import re
from calibre.ebooks.metadata import MetaInformation
from calibre.ebooks.pdb.header import PdbHeaderReader
from calibre.ebooks.pdb.ereader.reader import HeaderRecord
def get_metadata(stream, extract_cover=True):
"""
Return metadata as a L{MetaInfo} object
"""
mi = MetaInformation(None, [_('Unknown')])
stream.seek(0)
pheader = PdbHeaderReader(stream)
hr = HeaderRecord(pheader.section_data(0))
if hr.version in (2, 10):
try:
mdata = pheader.section_data(hr.metadata_offset)
mdata = mdata.split('\x00')
mi.title = mdata[0]
mi.authors = [mdata[1]]
mi.publisher = mdata[3]
mi.isbn = mdata[4]
except:
pass
if not mi.title:
mi.title = pheader.title if pheader.title else _('Unknown')
return mi

View File

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
'''
Read meta information from eReader pdb files.
'''
__license__ = 'GPL v3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import re
from calibre.ebooks.metadata import MetaInformation
from calibre.ebooks.pdb.header import PdbHeaderReader
from calibre.ebooks.metadata.ereader import get_metadata as eReader
MREADER = {
'PNPdPPrs' : eReader,
'PNRdPPrs' : eReader,
}
def get_metadata(stream, extract_cover=True):
"""
Return metadata as a L{MetaInfo} object
"""
pheader = PdbHeaderReader(stream)
MetadataReader = MREADER.get(pheader.ident, None)
if MetadataReader is None:
return MetaInformation(_('Unknown'), [_('Unknown')])
return MetadataReader(stream, extract_cover)

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import with_statement
'''
Read content from ereader pdb file.
'''
@ -127,7 +127,6 @@ class Reader(FormatReader):
with open('index.html', 'wb') as index:
self.log.debug('Writing text to index.html')
index.write(html)
# print html
if not os.path.exists(os.path.join(output_dir, 'images/')):
os.makedirs(os.path.join(output_dir, 'images/'))

View File

@ -1,9 +1,13 @@
# -*- coding: utf-8 -*-
from __future__ import with_statement
'''
Write content to ereader pdb file.
'''
__license__ = 'GPL v3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import struct, zlib
import Image, cStringIO