Tweaks to the header

This commit is contained in:
Kovid Goyal 2012-04-22 22:37:28 +05:30
parent d6c7ce3d7d
commit 03a6e4ad62

View File

@ -43,7 +43,10 @@ class MOBIHeader(Header): # {{{
# 10: Text record size # 10: Text record size
record_size = {record_size} record_size = {record_size}
# 12: Unused # 12: Encryption Type
encryption_type
# 14: Unused
unused2 unused2
# 16: Ident # 16: Ident
@ -65,8 +68,8 @@ class MOBIHeader(Header): # {{{
# 36: File version # 36: File version
file_version = {file_version} file_version = {file_version}
# 40: Meta orth record (Chunk table index in KF8) # 40: Meta orth record (used in dictionaries)
meta_orth_record = DYN meta_orth_record = NULL
# 44: Meta infl index # 44: Meta infl index
meta_infl_index = NULL meta_infl_index = NULL
@ -107,24 +110,23 @@ class MOBIHeader(Header): # {{{
huff_first_record huff_first_record
huff_count huff_count
# 120: DATP records # 120: Unknown (Maybe DATP related, maybe HUFF/CDIC related)
datp_first_record maybe_datp = zeroes(8)
datp_count
# 128: EXTH flags # 128: EXTH flags
exth_flags = DYN exth_flags = DYN
# 132: Unknown # 132: Unknown
unknown = zeroes(32) unknown = zeroes(36)
# 164: DRM # 168: DRM
drm_offset = NULL drm_offset
drm_count = NULL drm_count
drm_size drm_size
drm_flags drm_flags
# 180: Unknown # 184: Unknown
unknown2 = zeroes(12) unknown2 = zeroes(8)
# 192: FDST # 192: FDST
fdst_record = DYN fdst_record = DYN
@ -171,7 +173,8 @@ class MOBIHeader(Header): # {{{
padding = zeroes(8192) padding = zeroes(8192)
'''.format(record_size=RECORD_SIZE, file_version=FILE_VERSION) '''.format(record_size=RECORD_SIZE, file_version=FILE_VERSION)
SHORT_FIELDS = {'compression', 'last_text_record', 'record_size'} SHORT_FIELDS = {'compression', 'last_text_record', 'record_size',
'encryption_type', 'unused2'}
ALIGN = True ALIGN = True
POSITIONS = {'title_offset':'full_title'} POSITIONS = {'title_offset':'full_title'}
@ -198,7 +201,7 @@ class KF8Book(object):
self.text_length = writer.text_length self.text_length = writer.text_length
# KF8 Indices # KF8 Indices
self.chunk_index = self.meta_orth_record = len(self.records) self.chunk_index = len(self.records)
self.records.extend(writer.chunk_records) self.records.extend(writer.chunk_records)
self.skel_index = len(self.records) self.skel_index = len(self.records)
self.records.extend(writer.skel_records) self.records.extend(writer.skel_records)
@ -264,12 +267,11 @@ class KF8Book(object):
start_offset=self.start_offset, mobi_doctype=self.book_type) start_offset=self.start_offset, mobi_doctype=self.book_type)
kwargs = {field:getattr(self, field) for field in kwargs = {field:getattr(self, field) for field in
('compression', 'text_length', 'last_text_record', ('compression', 'text_length', 'last_text_record', 'book_type',
'book_type', 'meta_orth_record', 'first_non_text_record', 'first_non_text_record', 'title_length', 'language_code',
'title_length', 'language_code', 'first_resource_record', 'first_resource_record', 'exth_flags', 'fdst_record',
'exth_flags', 'fdst_record', 'fdst_count', 'ncx_index', 'fdst_count', 'ncx_index', 'chunk_index', 'skel_index',
'chunk_index', 'skel_index', 'guide_index', 'exth', 'guide_index', 'exth', 'full_title')}
'full_title')}
return MOBIHeader()(**kwargs) return MOBIHeader()(**kwargs)
def write(self, outpath): def write(self, outpath):