py3 compat fix metadata processing for PDB files

Fixes #1929071 [Python error editing metadata](https://bugs.launchpad.net/calibre/+bug/1929071)
This commit is contained in:
Kovid Goyal 2021-05-20 18:39:13 +05:30
parent af11719020
commit aa3f34898d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -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')