From 0a73a7cf514fbad0ce5264cae43a7b796612dcda Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 26 Jan 2010 10:06:56 -0700 Subject: [PATCH] Remove ununsed vars from mobi.py --- src/calibre/ebooks/metadata/mobi.py | 48 +++++++++++++---------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py index f4809e3cff..def23c47e9 100644 --- a/src/calibre/ebooks/metadata/mobi.py +++ b/src/calibre/ebooks/metadata/mobi.py @@ -17,7 +17,7 @@ from calibre.ebooks.mobi import MobiError from calibre.ebooks.mobi.writer import rescale_image, MAX_THUMB_DIMEN from calibre.ebooks.mobi.langcodes import iana2mobi -import struct, traceback +import struct class StreamSlicer(object): @@ -74,15 +74,15 @@ class StreamSlicer(object): return stream.write(value) raise TypeError("stream indices must be integers") - def update(self, data_blocks): + def update(self, data_blocks): # Rewrite the stream stream = self._stream base = self.start stream.seek(base) self._stream.truncate(base) - for block in data_blocks: + for block in data_blocks: stream.write(block) - + def truncate(self, value): self._stream.truncate(value) @@ -90,7 +90,7 @@ class MetadataUpdater(object): def __init__(self, stream): self.stream = stream data = self.data = StreamSlicer(stream) - type = self.type = data[60:68] + self.type = data[60:68] self.nrecs, = unpack('>H', data[76:78]) record0 = self.record0 = self.record(0) self.encryption_type, = unpack('>H', record0[12:14]) @@ -135,25 +135,24 @@ class MetadataUpdater(object): elif id == 202: rindex, = self.thumbnail_rindex, = unpack('>I', content) self.thumbnail_record = self.record(rindex + image_base) - - def patch(self, off, new_record0): + + def patch(self, off, new_record0): # Save the current size of each record record_sizes = [len(new_record0)] for i in range(1,self.nrecs-1): record_sizes.append(self.pdbrecords[i+1][0]-self.pdbrecords[i][0]) # And the last one record_sizes.append(self.data.stop - self.pdbrecords[self.nrecs-1][0]) - + # pdbrecord[0] is the offset of record0. It will not change # record1 offset will be offset of record0 + len(new_record0) updated_pdbrecords = [self.pdbrecords[0][0]] record0_offset = self.pdbrecords[0][0] - current_offset = self.pdbrecords[1][0] updated_offset = record0_offset + len(new_record0) - + for i in range(1,self.nrecs-1): updated_pdbrecords.append(updated_offset) - updated_offset += record_sizes[i] + updated_offset += record_sizes[i] # Update the last pdbrecord updated_pdbrecords.append(updated_offset) @@ -175,17 +174,13 @@ class MetadataUpdater(object): self.data.stop = updated_pdbrecords[-1] + record_sizes[-1] def patchSection(self, section, new): - if (section + 1 == self.nrecs): - endoff = len(self.stream) - else: - endoff = self.pdbrecords[section + 1][0] off = self.pdbrecords[section][0] self.patch(off, new) def create_exth(self, exth=None): # Add an EXTH block to record 0, rewrite the stream # self.hexdump(self.record0) - + # Fetch the title title_offset, = struct.unpack('>L', self.record0[0x54:0x58]) title_length, = struct.unpack('>L', self.record0[0x58:0x5c]) @@ -198,10 +193,10 @@ class MetadataUpdater(object): self.record0[0x17] = "\xe8" self.record0[0xf4:0xf8] = pack('>L', 0xFFFFFFFF) mobi_header_length = 0xe8 - + # Set EXTH flag (0x40) self.record0[0x80:0x84] = pack('>L', self.flags|0x40) - + if not exth: # Construct an empty EXTH block pad = '\0' * 4 @@ -216,23 +211,23 @@ class MetadataUpdater(object): new_record0.write(self.record0[:0x10 + mobi_header_length]) new_record0.write(exth) new_record0.write(title_in_file) - + # Pad to a 4-byte boundary trail = len(new_record0.getvalue()) % 4 pad = '\0' * (4 - trail) # Always pad w/ at least 1 byte new_record0.write(pad) self.hexdump(new_record0.getvalue()) - + # Rebuild the stream, update the pdbrecords pointers self.patchSection(0,new_record0.getvalue()) - + # Update record0 self.record0 = self.record(0) - + def hexdump(self, src, length=16): # Diagnostic - FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)]) + FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)]) N=0; result='' while src: s,src = src[:length],src[length:] @@ -249,14 +244,14 @@ class MetadataUpdater(object): flags, val = a1, a2<<16|a3<<8|a4 pdbrecords.append( [offset, flags, val] ) return pdbrecords - + def update_pdbrecords(self, updated_pdbrecords): for (i, pdbrecord) in enumerate(updated_pdbrecords): self.data[78+i*8:78+i*8 + 4] = pack('>L',pdbrecord) # Refresh local copy self.pdbrecords = self.get_pdbrecords() - + def dump_pdbrecords(self): # Diagnostic print "MetadataUpdater.dump_pdbrecords()" @@ -264,7 +259,7 @@ class MetadataUpdater(object): for i in xrange(len(self.pdbrecords)): pdbrecord = self.pdbrecords[i] print "%10X %10X %10X" % (pdbrecord[0], pdbrecord[1], pdbrecord[2]) - + def record(self, n): if n >= self.nrecs: raise ValueError('non-existent record %r' % n) @@ -325,7 +320,6 @@ class MetadataUpdater(object): exth = ['EXTH', pack('>II', len(exth) + 12, len(recs)), exth, pad] exth = ''.join(exth) - title = (mi.title or _('Unknown')).encode(self.codec, 'replace') if getattr(self, 'exth', None) is None: raise MobiError('No existing EXTH record. Cannot update metadata.')