diff --git a/src/calibre/ebooks/mobi/debug.py b/src/calibre/ebooks/mobi/debug.py index 1279ba7793..1b921860e0 100644 --- a/src/calibre/ebooks/mobi/debug.py +++ b/src/calibre/ebooks/mobi/debug.py @@ -1065,7 +1065,7 @@ class TBSIndexing(object): # {{{ if eof != 0: raise ValueError('Unknown eof value %s when reading' ' starting section. All bytes: %r'%(eof, orig)) - ans.append('This record is spanned by an article from' + ans.append('??This record has more than one article from ' ' the section: %d'%si.index) return si, byts # }}} diff --git a/src/calibre/ebooks/mobi/writer2/indexer.py b/src/calibre/ebooks/mobi/writer2/indexer.py index d5226f68bd..15207c0230 100644 --- a/src/calibre/ebooks/mobi/writer2/indexer.py +++ b/src/calibre/ebooks/mobi/writer2/indexer.py @@ -266,15 +266,15 @@ class TBS(object): # {{{ buf.write(typ) if typ not in (self.type_110, self.type_111) and parent_section_index > 0: + extra = {} # Write starting section information if spanner is None: num_articles = len([a for a in depth_map[1] if a.parent_index == parent_section_index]) - extra = {} + if not depth_map[1]: + extra = {0b0001: 0} if num_articles > 1: extra = {0b0100: num_articles} - else: - extra = {0b0001: 0} buf.write(encode_tbs(parent_section_index, extra)) if spanner is None: @@ -299,10 +299,10 @@ class TBS(object): # {{{ extra = {} if num > 1: extra[0b0100] = num - if i == 0 and next_sec is not None: + if False and i == 0 and next_sec is not None: # Write offset to next section from start of record - # For some reason kindlegen only writes this offset - # for the first section transition. Imitate it. + # I can't figure out exactly when Kindlegen decides to + # write this so I have disabled it for now. extra[0b0001] = next_sec.offset - data['offset'] buf.write(encode_tbs(first_article.index-section.index, extra)) diff --git a/src/calibre/ebooks/mobi/writer2/main.py b/src/calibre/ebooks/mobi/writer2/main.py index 971578f5a0..4d53b7c3ef 100644 --- a/src/calibre/ebooks/mobi/writer2/main.py +++ b/src/calibre/ebooks/mobi/writer2/main.py @@ -19,7 +19,7 @@ from calibre.ebooks.mobi.langcodes import iana2mobi from calibre.utils.filenames import ascii_filename from calibre.ebooks.mobi.writer2 import (PALMDOC, UNCOMPRESSED, RECORD_SIZE) from calibre.ebooks.mobi.utils import (rescale_image, encint, - encode_trailing_data) + encode_trailing_data, align_block) from calibre.ebooks.mobi.writer2.indexer import Indexer EXTH_CODES = { @@ -434,7 +434,7 @@ class MobiWriter(object): # Add some buffer so that Amazon can add encryption information if this # MOBI is submitted for publication record0 += (b'\0' * (1024*8)) - self.records[0] = record0 + self.records[0] = align_block(record0) # }}} def build_exth(self): # EXTH Header {{{