From 4192578a7c620802c3be1c9ba2e4055065a1f1a4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 4 Aug 2011 11:13:25 -0600 Subject: [PATCH] ... --- src/calibre/ebooks/mobi/debug.py | 11 +++++++++-- src/calibre/ebooks/mobi/writer2/serializer.py | 13 ++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/calibre/ebooks/mobi/debug.py b/src/calibre/ebooks/mobi/debug.py index af5238db70..fb1b92cd42 100644 --- a/src/calibre/ebooks/mobi/debug.py +++ b/src/calibre/ebooks/mobi/debug.py @@ -1024,8 +1024,14 @@ class IndexRecord(object): # {{{ for entry in self.indices: offset = entry.offset a(str(entry)) + t = self.alltext if offset is not None and self.alltext is not None: - a('\tHTML at offset: %r'%self.alltext[offset:offset+100]) + a('\tHTML before offset: %r'%t[offset-50:offset]) + a('\tHTML after offset: %r'%t[offset:offset+50]) + p = offset+entry.size + a('\tHTML before end: %r'%t[p-50:p]) + a('\tHTML after end: %r'%t[p:p+50]) + a('') return '\n'.join(ans) @@ -1053,11 +1059,12 @@ class CNCX(object): # {{{ self.records[pos+record_offset] = raw[ pos+consumed:pos+consumed+length].decode(codec) except: - byts = raw[pos+consumed:pos+consumed+length] + byts = raw[pos:] r = format_bytes(byts) print ('CNCX entry at offset %d has unknown format %s'%( pos+record_offset, r)) self.records[pos+record_offset] = r + pos = len(raw) pos += consumed+length record_offset += 0x10000 diff --git a/src/calibre/ebooks/mobi/writer2/serializer.py b/src/calibre/ebooks/mobi/writer2/serializer.py index 594f8bfd78..06aacc1b09 100644 --- a/src/calibre/ebooks/mobi/writer2/serializer.py +++ b/src/calibre/ebooks/mobi/writer2/serializer.py @@ -110,6 +110,7 @@ class Serializer(object): self.serialize_head() self.serialize_body() buf.write(b'') + self.end_offset = buf.tell() self.fixup_links() return buf.getvalue() @@ -206,20 +207,18 @@ class Serializer(object): self.breaks.append(buf.tell() - 1) self.id_offsets[urlnormalize(item.href)] = buf.tell() if item.is_section_start: - buf.write(b'
') + buf.write(b' ') if item.is_article_start: - buf.write(b'
') + buf.write(b' ') for elem in item.data.find(XHTML('body')): self.serialize_elem(elem, item) - if item.is_article_end: - # Kindle periodical article end marker - buf.write(b'
') if self.write_page_breaks_after_item: buf.write(b'') if item.is_article_end: - buf.write(b'
') + # Kindle periodical article end marker + buf.write(b' ') if item.is_section_end: - buf.write(b'
') + buf.write(b' ') self.anchor_offset = None def serialize_elem(self, elem, item, nsrmap=NSRMAP):