home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1019 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  6.4 KB  |  135 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2009, John Schember <john@nachtimwald.com>'
  6. __docformat__ = 'restructuredtext en'
  7. import struct
  8. import sys
  9. from calibre.ebooks.pdb.ereader import EreaderError
  10. from calibre.ebooks.pdb.header import PdbHeaderReader
  11.  
  12. def ereader_header_info(header):
  13.     h0 = header.section_data(0)
  14.     print 'Header Size:     %s' % len(h0)
  15.     if len(h0) == 132:
  16.         print 'Header Type:     Dropbook compatible'
  17.         print ''
  18.         ereader_header_info132(h0)
  19.     elif len(h0) == 202:
  20.         print 'Header Type:     Makebook compatible'
  21.         print ''
  22.         ereader_header_info202(h0)
  23.     else:
  24.         raise EreaderError('Size mismatch. eReader header record size %i KB is not supported.' % len(h0))
  25.     return len(h0) == 132
  26.  
  27.  
  28. def pdb_header_info(header):
  29.     print 'PDB Header Info:'
  30.     print ''
  31.     print 'Identity:        %s' % header.ident
  32.     print 'Total Sectons:   %s' % header.num_sections
  33.     print 'Title:           %s' % header.title
  34.     print ''
  35.  
  36.  
  37. def ereader_header_info132(h0):
  38.     print 'Ereader Record 0 (Header) Info:'
  39.     print ''
  40.     print '0-2 Version:             %i' % struct.unpack('>H', h0[0:2])[0]
  41.     print '2-4:                     %i' % struct.unpack('>H', h0[2:4])[0]
  42.     print '4-6:                     %i' % struct.unpack('>H', h0[4:6])[0]
  43.     print '6-8 Codepage:            %i' % struct.unpack('>H', h0[6:8])[0]
  44.     print '8-10:                    %i' % struct.unpack('>H', h0[8:10])[0]
  45.     print '10-12:                   %i' % struct.unpack('>H', h0[10:12])[0]
  46.     print '12-14 Non-Text offset:   %i' % struct.unpack('>H', h0[12:14])[0]
  47.     print '14-16:                   %i' % struct.unpack('>H', h0[14:16])[0]
  48.     print '16-18:                   %i' % struct.unpack('>H', h0[16:18])[0]
  49.     print '18-20:                   %i' % struct.unpack('>H', h0[18:20])[0]
  50.     print '20-22 Image Count:       %i' % struct.unpack('>H', h0[20:22])[0]
  51.     print '22-24:                   %i' % struct.unpack('>H', h0[22:24])[0]
  52.     print '24-26 Has Metadata?:     %i' % struct.unpack('>H', h0[24:26])[0]
  53.     print '26-28:                   %i' % struct.unpack('>H', h0[26:28])[0]
  54.     print '28-30 Footnote Count:    %i' % struct.unpack('>H', h0[28:30])[0]
  55.     print '30-32 Sidebar Count:     %i' % struct.unpack('>H', h0[30:32])[0]
  56.     print '32-34 Bookmark Offset:   %i' % struct.unpack('>H', h0[32:34])[0]
  57.     print '34-36 MAGIC:             %i' % struct.unpack('>H', h0[34:36])[0]
  58.     print '36-38:                   %i' % struct.unpack('>H', h0[36:38])[0]
  59.     print '38-40:                   %i' % struct.unpack('>H', h0[38:40])[0]
  60.     print '40-42 Image Data Offset: %i' % struct.unpack('>H', h0[40:42])[0]
  61.     print '42-44:                   %i' % struct.unpack('>H', h0[42:44])[0]
  62.     print '44-46 Metadata Offset:   %i' % struct.unpack('>H', h0[44:46])[0]
  63.     print '46-48:                   %i' % struct.unpack('>H', h0[46:48])[0]
  64.     print '48-50 Footnote Offset:   %i' % struct.unpack('>H', h0[48:50])[0]
  65.     print '50-52 Sidebar Offset:    %i' % struct.unpack('>H', h0[50:52])[0]
  66.     print '52-54 Last Data Offset:  %i' % struct.unpack('>H', h0[52:54])[0]
  67.     for i in range(54, 131, 2):
  68.         print '%i-%i:                   %i' % (i, i + 2, struct.unpack('>H', h0[i:i + 2])[0])
  69.     
  70.     print ''
  71.  
  72.  
  73. def ereader_header_info202(h0):
  74.     print 'Ereader Record 0 (Header) Info:'
  75.     print ''
  76.     print '0-2 Version:             %i' % struct.unpack('>H', h0[0:2])[0]
  77.     print '2-4 Garbage:             %i' % struct.unpack('>H', h0[2:4])[0]
  78.     print '4-6 Garbage:             %i' % struct.unpack('>H', h0[4:6])[0]
  79.     print '6-8 Garbage:             %i' % struct.unpack('>H', h0[6:8])[0]
  80.     print '8-10 Non-Text Offset:    %i' % struct.unpack('>H', h0[8:10])[0]
  81.     print '10-12:                   %i' % struct.unpack('>H', h0[10:12])[0]
  82.     print '12-14:                   %i' % struct.unpack('>H', h0[12:14])[0]
  83.     print '14-16 Garbage:           %i' % struct.unpack('>H', h0[14:16])[0]
  84.     print '16-18 Garbage:           %i' % struct.unpack('>H', h0[16:18])[0]
  85.     print '18-20 Garbage:           %i' % struct.unpack('>H', h0[18:20])[0]
  86.     print '20-22 Garbage:           %i' % struct.unpack('>H', h0[20:22])[0]
  87.     print '22-24 Garbage:           %i' % struct.unpack('>H', h0[22:24])[0]
  88.     print '24-26:                   %i' % struct.unpack('>H', h0[24:26])[0]
  89.     print '26-28:                   %i' % struct.unpack('>H', h0[26:28])[0]
  90.     for i in range(28, 98, 2):
  91.         print '%i-%i Garbage:           %i' % (i, i + 2, struct.unpack('>H', h0[i:i + 2])[0])
  92.     
  93.     print '98-100:                  %i' % struct.unpack('>H', h0[98:100])[0]
  94.     for i in range(100, 110, 2):
  95.         print '%i-%i Garbage:         %i' % (i, i + 2, struct.unpack('>H', h0[i:i + 2])[0])
  96.     
  97.     print '110-112:                 %i' % struct.unpack('>H', h0[110:112])[0]
  98.     print '112-114:                 %i' % struct.unpack('>H', h0[112:114])[0]
  99.     print '114-116 Garbage:         %i' % struct.unpack('>H', h0[114:116])[0]
  100.     for i in range(116, 202, 2):
  101.         print '%i-%i:                 %i' % (i, i + 2, struct.unpack('>H', h0[i:i + 2])[0])
  102.     
  103.     print ''
  104.     print '* Garbage: Random values.'
  105.     print ''
  106.  
  107.  
  108. def section_lengths(header):
  109.     print 'Section Sizes'
  110.     print ''
  111.     for i in range(0, header.section_count()):
  112.         size = len(header.section_data(i))
  113.         if size > 65505:
  114.             message = '<--- Over!'
  115.         else:
  116.             message = ''
  117.         print 'Section %i:   %i %s' % (i, size, message)
  118.     
  119.  
  120.  
  121. def main(args = sys.argv):
  122.     if len(args) < 2:
  123.         print 'Error: requires input file.'
  124.         return 1
  125.     f = open(sys.argv[1], 'rb')
  126.     pheader = PdbHeaderReader(f)
  127.     pdb_header_info(pheader)
  128.     ereader_header_info(pheader)
  129.     section_lengths(pheader)
  130.     return 0
  131.  
  132. if __name__ == '__main__':
  133.     sys.exit(main())
  134.  
  135.