diff --git a/src/calibre/ebooks/lrf/meta.py b/src/calibre/ebooks/lrf/meta.py index 9996b2be84..cac7ea9cc2 100644 --- a/src/calibre/ebooks/lrf/meta.py +++ b/src/calibre/ebooks/lrf/meta.py @@ -676,7 +676,10 @@ def main(args=sys.argv): if options.get_thumbnail: print "Thumbnail:", td if options.get_cover: - ext, data = lrf.get_cover() + try: + ext, data = lrf.get_cover() + except: # Fails on books created by LRFCreator 1.0 + ext, data = None, None if data: cover = os.path.splitext(os.path.basename(args[1]))[0]+"_cover."+ext open(cover, 'wb').write(data) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index c0c06d12fb..e7dac062f4 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -43,14 +43,17 @@ def metadata_from_formats(formats): for path in formats: ext = path_to_ext(path) stream = open(path, 'rb') - mi.smart_update(get_metadata(stream, stream_type=ext, use_libprs_metadata=True)) + try: + mi.smart_update(get_metadata(stream, stream_type=ext, use_libprs_metadata=True)) + except: + continue if getattr(mi, 'application_id', None) is not None: return mi if not mi.title: - mi.title = 'Unknown' + mi.title = _('Unknown') if not mi.authors: - mi.authors = ['Unknown'] + mi.authors = [_('Unknown')] return mi diff --git a/src/calibre/ebooks/metadata/opf.py b/src/calibre/ebooks/metadata/opf.py index d8763bc024..1bff99ecf4 100644 --- a/src/calibre/ebooks/metadata/opf.py +++ b/src/calibre/ebooks/metadata/opf.py @@ -320,7 +320,10 @@ class OPF(MetaInformation): def get_application_id(self): for item in self.soup.package.metadata.findAll('dc:identifier'): - if item.has_key('scheme') and item['scheme'] == __appname__: + scheme = item.get('scheme', None) + if scheme is None: + scheme = item.get('opf:scheme', None) + if scheme in ['libprs500', 'calibre']: return str(item.string).strip() return None @@ -361,10 +364,7 @@ class OPF(MetaInformation): return None def get_rating(self): - xm = self.soup.package.metadata.find('x-metadata') - if not xm: - return None - s = xm.find('rating') + s = self.soup.package.metadata.find('rating') if s and s.string: try: return int(str(s.string).strip()) diff --git a/src/calibre/ebooks/metadata/toc.py b/src/calibre/ebooks/metadata/toc.py index 23ce77bcb6..25f7ca7010 100644 --- a/src/calibre/ebooks/metadata/toc.py +++ b/src/calibre/ebooks/metadata/toc.py @@ -86,10 +86,7 @@ class TOC(list): self.read_html_toc(toc) except: - print 'WARNING: Could not read Table of Contents:' - import traceback - traceback.print_exc(file=sys.stdout) - print 'Continuing anyway' + print 'WARNING: Could not read Table of Contents. Continuing anyway.' else: path = opfreader.manifest.item(toc.lower()) path = getattr(path, 'path', path) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 2d20d05b7a..652ffcae09 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -422,8 +422,8 @@ in which you want to store your books files. Any existing books will be automati files = _('
Books with the same title as the following already exist in the database. Add them anyway?