CHM Input: Handle CHM files that have missing or empty root files.

Fixes #1697764 [Conversion from CHM fails](https://bugs.launchpad.net/calibre/+bug/1697764)
This commit is contained in:
Kovid Goyal 2017-06-14 09:25:09 +05:30
parent bab9ae844b
commit 3f0954f0c7
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -54,7 +54,12 @@ class CHMInput(InputFormatPlugin):
debug_dump=debug_dump) debug_dump=debug_dump)
mainpath = os.path.join(tdir, mainname) mainpath = os.path.join(tdir, mainname)
try:
metadata = get_metadata_from_reader(self._chm_reader) metadata = get_metadata_from_reader(self._chm_reader)
except Exception:
log.exception('Failed to read metadata, using filename')
from calibre.ebooks.metadata.book.base import Metadata
metadata = Metadata(os.path.basename(chm_name))
encoding = self._chm_reader.get_encoding() or options.input_encoding or 'cp1252' encoding = self._chm_reader.get_encoding() or options.input_encoding or 'cp1252'
self._chm_reader.CloseCHM() self._chm_reader.CloseCHM()
# print tdir, mainpath # print tdir, mainpath
@ -194,5 +199,3 @@ class CHMInput(InputFormatPlugin):
for node in root.xpath('//object'): for node in root.xpath('//object'):
self.add_node(node, toc, ancestor_map) self.add_node(node, toc, ancestor_map)
return toc return toc