mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 18:24:30 -04:00
RB input: Support uncompressed text.
This commit is contained in:
parent
503b697653
commit
9f54a396d6
@ -70,21 +70,24 @@ class Reader(object):
|
||||
return toc
|
||||
|
||||
def get_text(self, toc_item, output_dir):
|
||||
if toc_item.flags != 8:
|
||||
if toc_item.flags in (1, 2):
|
||||
return
|
||||
|
||||
output = u''
|
||||
|
||||
self.stream.seek(toc_item.offset)
|
||||
count = self.read_i32()
|
||||
self.read_i32() # Uncompressed size.
|
||||
chunck_sizes = []
|
||||
for i in range(count):
|
||||
chunck_sizes.append(self.read_i32())
|
||||
|
||||
for size in chunck_sizes:
|
||||
cm_chunck = self.stream.read(size)
|
||||
output += zlib.decompress(cm_chunck).decode('cp1252' if self.encoding is None else self.encoding)
|
||||
if toc_item.flags == 8:
|
||||
count = self.read_i32()
|
||||
self.read_i32() # Uncompressed size.
|
||||
chunck_sizes = []
|
||||
for i in range(count):
|
||||
chunck_sizes.append(self.read_i32())
|
||||
|
||||
for size in chunck_sizes:
|
||||
cm_chunck = self.stream.read(size)
|
||||
output += zlib.decompress(cm_chunck).decode('cp1252' if self.encoding is None else self.encoding)
|
||||
else:
|
||||
output += self.stream.read(toc_item.size).decode('cp1252' if self.encoding is None else self.encoding)
|
||||
|
||||
with open(os.path.join(output_dir, toc_item.name), 'wb') as html:
|
||||
html.write(output.encode('utf-8'))
|
||||
|
Loading…
x
Reference in New Issue
Block a user