mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Ignore invalid metadata when adding books instead of erroring out
This commit is contained in:
parent
e62cd7e2c7
commit
33915e2905
@ -1125,10 +1125,18 @@ class LibraryDatabase2(LibraryDatabase):
|
||||
self.set_path(id, True)
|
||||
self.notify('metadata', [id])
|
||||
|
||||
def set_metadata(self, id, mi):
|
||||
def set_metadata(self, id, mi, ignore_errors=False):
|
||||
'''
|
||||
Set metadata for the book `id` from the `MetaInformation` object `mi`
|
||||
'''
|
||||
def doit(func, *args, **kwargs):
|
||||
try:
|
||||
func(*args, **kwargs)
|
||||
except:
|
||||
if ignore_errors:
|
||||
traceback.print_exc()
|
||||
else:
|
||||
raise
|
||||
if mi.title:
|
||||
self.set_title(id, mi.title)
|
||||
if not mi.authors:
|
||||
@ -1138,29 +1146,29 @@ class LibraryDatabase2(LibraryDatabase):
|
||||
authors += string_to_authors(a)
|
||||
self.set_authors(id, authors, notify=False)
|
||||
if mi.author_sort:
|
||||
self.set_author_sort(id, mi.author_sort, notify=False)
|
||||
doit(self.set_author_sort, id, mi.author_sort, notify=False)
|
||||
if mi.publisher:
|
||||
self.set_publisher(id, mi.publisher, notify=False)
|
||||
doit(self.set_publisher, id, mi.publisher, notify=False)
|
||||
if mi.rating:
|
||||
self.set_rating(id, mi.rating, notify=False)
|
||||
doit(self.set_rating, id, mi.rating, notify=False)
|
||||
if mi.series:
|
||||
self.set_series(id, mi.series, notify=False)
|
||||
doit(self.set_series, id, mi.series, notify=False)
|
||||
if mi.cover_data[1] is not None:
|
||||
self.set_cover(id, mi.cover_data[1])
|
||||
doit(self.set_cover, id, mi.cover_data[1])
|
||||
elif mi.cover is not None and os.access(mi.cover, os.R_OK):
|
||||
self.set_cover(id, open(mi.cover, 'rb').read())
|
||||
doit(self.set_cover, id, open(mi.cover, 'rb'))
|
||||
if mi.tags:
|
||||
self.set_tags(id, mi.tags, notify=False)
|
||||
doit(self.set_tags, id, mi.tags, notify=False)
|
||||
if mi.comments:
|
||||
self.set_comment(id, mi.comments, notify=False)
|
||||
doit(self.set_comment, id, mi.comments, notify=False)
|
||||
if mi.isbn and mi.isbn.strip():
|
||||
self.set_isbn(id, mi.isbn, notify=False)
|
||||
doit(self.set_isbn, id, mi.isbn, notify=False)
|
||||
if mi.series_index:
|
||||
self.set_series_index(id, mi.series_index, notify=False)
|
||||
doit(self.set_series_index, id, mi.series_index, notify=False)
|
||||
if mi.pubdate:
|
||||
self.set_pubdate(id, mi.pubdate, notify=False)
|
||||
doit(self.set_pubdate, id, mi.pubdate, notify=False)
|
||||
if getattr(mi, 'timestamp', None) is not None:
|
||||
self.set_timestamp(id, mi.timestamp, notify=False)
|
||||
doit(self.set_timestamp, id, mi.timestamp, notify=False)
|
||||
self.set_path(id, True)
|
||||
self.notify('metadata', [id])
|
||||
|
||||
@ -1519,7 +1527,7 @@ class LibraryDatabase2(LibraryDatabase):
|
||||
id = obj.lastrowid
|
||||
self.data.books_added([id], self)
|
||||
self.set_path(id, True)
|
||||
self.set_metadata(id, mi)
|
||||
self.set_metadata(id, mi, ignore_errors=True)
|
||||
for path in formats:
|
||||
ext = os.path.splitext(path)[1][1:].lower()
|
||||
if ext == 'opf':
|
||||
|
Loading…
x
Reference in New Issue
Block a user