home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_970 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  1.7 KB  |  48 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. __license__ = 'GPL v3'
  6. __copyright__ = '2010, Li Fanxi <lifanxi@freemindworld.com>'
  7. import os
  8. from StringIO import StringIO
  9. from calibre.ebooks.metadata import MetaInformation
  10. from calibre.ebooks.snb.snbfile import SNBFile
  11. from lxml import etree
  12.  
  13. def get_metadata(stream, extract_cover = True):
  14.     mi = MetaInformation(_('Unknown'), [
  15.         _('Unknown')])
  16.     snbFile = SNBFile()
  17.     
  18.     try:
  19.         if not hasattr(stream, 'write'):
  20.             snbFile.Parse(StringIO(stream), True)
  21.         else:
  22.             stream.seek(0)
  23.             snbFile.Parse(stream, True)
  24.         meta = snbFile.GetFileStream('snbf/book.snbf')
  25.         if meta != None:
  26.             meta = etree.fromstring(meta)
  27.             mi.title = meta.find('.//head/name').text
  28.             mi.authors = [
  29.                 meta.find('.//head/author').text]
  30.             mi.language = meta.find('.//head/language').text.lower().replace('_', '-')
  31.             mi.publisher = meta.find('.//head/publisher').text
  32.             if extract_cover:
  33.                 cover = meta.find('.//head/cover')
  34.                 if cover != None and cover.text != None:
  35.                     (root, ext) = os.path.splitext(cover.text)
  36.                     if ext == '.jpeg':
  37.                         ext = '.jpg'
  38.                     
  39.                     mi.cover_data = (ext[-3:], snbFile.GetFileStream('snbc/images/' + cover.text))
  40.                 
  41.             
  42.     except Exception:
  43.         import traceback
  44.         traceback.print_exc()
  45.  
  46.     return mi
  47.  
  48.