From 42cb67abb3cca0c0afa1a6657ca4b0bfbcd19b84 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Mon, 29 Apr 2019 01:52:41 -0400 Subject: [PATCH] py3: make rb input work --- src/calibre/ebooks/rb/reader.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/calibre/ebooks/rb/reader.py b/src/calibre/ebooks/rb/reader.py index da5330c7f1..0d111107fa 100644 --- a/src/calibre/ebooks/rb/reader.py +++ b/src/calibre/ebooks/rb/reader.py @@ -64,7 +64,7 @@ class Reader(object): toc = RBToc() for i in range(pages): - name = unquote(self.stream.read(32).strip('\x00')) + name = unquote(self.stream.read(32).strip(b'\x00')) size, offset, flags = self.read_i32(), self.read_i32(), self.read_i32() toc.append(RBToc.Item(name=name, size=size, offset=offset, flags=flags)) @@ -90,7 +90,7 @@ class Reader(object): else: output += self.stream.read(toc_item.size).decode('cp1252' if self.encoding is None else self.encoding, 'replace') - with open(os.path.join(output_dir, toc_item.name), 'wb') as html: + with open(os.path.join(output_dir, toc_item.name.decode('utf-8')), 'wb') as html: html.write(output.replace('', '<TITLE> ').encode('utf-8')) def get_image(self, toc_item, output_dir): @@ -100,7 +100,7 @@ class Reader(object): self.stream.seek(toc_item.offset) data = self.stream.read(toc_item.size) - with open(os.path.join(output_dir, toc_item.name), 'wb') as img: + with open(os.path.join(output_dir, toc_item.name.decode('utf-8')), 'wb') as img: img.write(data) def extract_content(self, output_dir): @@ -109,13 +109,14 @@ class Reader(object): images = [] for item in self.toc: - if item.name.lower().endswith('html'): - self.log.debug('HTML item %s found...' % item.name) - html.append(item.name) + iname = item.name.decode('utf-8') + if iname.lower().endswith('html'): + self.log.debug('HTML item %s found...' % iname) + html.append(iname) self.get_text(item, output_dir) - if item.name.lower().endswith('png'): - self.log.debug('PNG item %s found...' % item.name) - images.append(item.name) + if iname.lower().endswith('png'): + self.log.debug('PNG item %s found...' % iname) + images.append(iname) self.get_image(item, output_dir) opf_path = self.create_opf(output_dir, html, images)