From b1e35bdaf3b0079d5f33e1dd38009369f02a1ef8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 28 Apr 2012 10:47:44 +0530 Subject: [PATCH] KF8 dump: Dump all TBS sequences --- src/calibre/ebooks/mobi/debug/mobi8.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/calibre/ebooks/mobi/debug/mobi8.py b/src/calibre/ebooks/mobi/debug/mobi8.py index c5cd8d2d69..40470ad2dd 100644 --- a/src/calibre/ebooks/mobi/debug/mobi8.py +++ b/src/calibre/ebooks/mobi/debug/mobi8.py @@ -215,12 +215,21 @@ class MOBIFile(object): desc.append(x+':') desc.extend(points) desc.append('TBS Bytes: ' + format_bytes(tbs_bytes)) - val, extra, consumed = decode_tbs(tbs_bytes, flag_size=3) - extra = {bin(k):v for k, v in extra.iteritems()} - desc.append('First sequence: %r %r'%(val, extra)) - byts = tbs_bytes[consumed:] - if byts: - desc.append('Remaining bytes: %s'%format_bytes(byts)) + flag_sz = 3 + sequences = [] + while tbs_bytes: + try: + val, extra, consumed = decode_tbs(tbs_bytes, flag_size=flag_sz) + except: + break + flag_sz = 4 + tbs_bytes = tbs_bytes[consumed:] + extra = {bin(k):v for k, v in extra.iteritems()} + sequences.append((val, extra)) + for i, seq in enumerate(sequences): + desc.append('Sequence #%d: %r %r'%(i, seq[0], seq[1])) + if tbs_bytes: + desc.append('Remaining bytes: %s'%format_bytes(tbs_bytes)) desc.append('') self.indexing_data.append('\n'.join(desc))