mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Have downloaded periodicals recognized when transferred via USB to the Kindle Fire
This commit is contained in:
parent
17f9da26c4
commit
8f3fff04e3
@ -302,7 +302,19 @@ class MobiWriter(object):
|
|||||||
|
|
||||||
def generate_record0(self): # MOBI header {{{
|
def generate_record0(self): # MOBI header {{{
|
||||||
metadata = self.oeb.metadata
|
metadata = self.oeb.metadata
|
||||||
exth = self.build_exth()
|
bt = 0x002
|
||||||
|
if self.primary_index_record_idx is not None:
|
||||||
|
if False and self.indexer.is_flat_periodical:
|
||||||
|
# Disabled as setting this to 0x102 causes the Kindle to not
|
||||||
|
# auto archive the issues
|
||||||
|
bt = 0x102
|
||||||
|
elif self.indexer.is_periodical:
|
||||||
|
# If you change this, remember to change the cdetype in the EXTH
|
||||||
|
# header as well
|
||||||
|
bt = {'newspaper':0x101}.get(self.publication_type, 0x103)
|
||||||
|
|
||||||
|
|
||||||
|
exth = self.build_exth(bt)
|
||||||
first_image_record = None
|
first_image_record = None
|
||||||
if self.image_records:
|
if self.image_records:
|
||||||
first_image_record = len(self.records)
|
first_image_record = len(self.records)
|
||||||
@ -351,17 +363,6 @@ class MobiWriter(object):
|
|||||||
# 0x10 - 0x13 : UID
|
# 0x10 - 0x13 : UID
|
||||||
# 0x14 - 0x17 : Generator version
|
# 0x14 - 0x17 : Generator version
|
||||||
|
|
||||||
bt = 0x002
|
|
||||||
if self.primary_index_record_idx is not None:
|
|
||||||
if False and self.indexer.is_flat_periodical:
|
|
||||||
# Disabled as setting this to 0x102 causes the Kindle to not
|
|
||||||
# auto archive the issues
|
|
||||||
bt = 0x102
|
|
||||||
elif self.indexer.is_periodical:
|
|
||||||
# If you change this, remember to change the cdetype in the EXTH
|
|
||||||
# header as well
|
|
||||||
bt = {'newspaper':0x101}.get(self.publication_type, 0x103)
|
|
||||||
|
|
||||||
record0.write(pack(b'>IIIII',
|
record0.write(pack(b'>IIIII',
|
||||||
0xe8, bt, 65001, uid, 6))
|
0xe8, bt, 65001, uid, 6))
|
||||||
|
|
||||||
@ -479,7 +480,7 @@ class MobiWriter(object):
|
|||||||
self.records[0] = align_block(record0)
|
self.records[0] = align_block(record0)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
def build_exth(self): # EXTH Header {{{
|
def build_exth(self, mobi_doctype): # EXTH Header {{{
|
||||||
oeb = self.oeb
|
oeb = self.oeb
|
||||||
exth = StringIO()
|
exth = StringIO()
|
||||||
nrecs = 0
|
nrecs = 0
|
||||||
@ -535,16 +536,17 @@ class MobiWriter(object):
|
|||||||
nrecs += 1
|
nrecs += 1
|
||||||
|
|
||||||
# Write cdetype
|
# Write cdetype
|
||||||
if not self.is_periodical and not self.opts.share_not_sync:
|
if not self.is_periodical:
|
||||||
exth.write(pack(b'>II', 501, 12))
|
if not self.opts.share_not_sync:
|
||||||
exth.write(b'EBOK')
|
exth.write(pack(b'>II', 501, 12))
|
||||||
nrecs += 1
|
exth.write(b'EBOK')
|
||||||
|
nrecs += 1
|
||||||
else:
|
else:
|
||||||
# Should be b'NWPR' for doc type of 0x101 and b'MAGZ' for doctype
|
ids = {0x101:b'NWPR', 0x103:b'MAGZ'}.get(mobi_doctype, None)
|
||||||
# of 0x103 but the old writer didn't write them, and I dont know
|
if ids:
|
||||||
# what it should be for type 0x102 (b'BLOG'?) so write nothing
|
exth.write(pack(b'>II', 501, 12))
|
||||||
# instead
|
exth.write(ids)
|
||||||
pass
|
nrecs += 1
|
||||||
|
|
||||||
# Add a publication date entry
|
# Add a publication date entry
|
||||||
if oeb.metadata['date']:
|
if oeb.metadata['date']:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user