From aa3f34898de2cd63c91a0c67d2f6103ab0c9fd45 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 20 May 2021 18:39:13 +0530 Subject: [PATCH] py3 compat fix metadata processing for PDB files Fixes #1929071 [Python error editing metadata](https://bugs.launchpad.net/calibre/+bug/1929071) --- src/calibre/ebooks/metadata/pdb.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/pdb.py b/src/calibre/ebooks/metadata/pdb.py index d947502e4c..71fa243dbb 100644 --- a/src/calibre/ebooks/metadata/pdb.py +++ b/src/calibre/ebooks/metadata/pdb.py @@ -43,7 +43,10 @@ def get_metadata(stream, extract_cover=True): MetadataReader = MREADER.get(pheader.ident, None) if MetadataReader is None: - return MetaInformation(pheader.title, [_('Unknown')]) + t = pheader.title + if isinstance(t, bytes): + t = t.decode('utf-8', 'replace') + return MetaInformation(t, [_('Unknown')]) return MetadataReader(stream, extract_cover) @@ -59,4 +62,4 @@ def set_metadata(stream, mi): MetadataWriter(stream, mi) stream.seek(0) - stream.write('%s\x00' % re.sub('[^-A-Za-z0-9 ]+', '_', mi.title).ljust(31, '\x00')[:31].encode('ascii', 'replace')) + stream.write(re.sub('[^-A-Za-z0-9 ]+', '_', mi.title).ljust(31, '\x00')[:31].encode('ascii', 'replace') + b'\x00')