mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #1823 (Calibre crashes on import of Mobipocket file)
This commit is contained in:
parent
759c17bec3
commit
2b4a4a31e3
@ -19,7 +19,8 @@ from calibre.library import title_sort
|
|||||||
from calibre.library.database import LibraryDatabase
|
from calibre.library.database import LibraryDatabase
|
||||||
from calibre.library.sqlite import connect, IntegrityError
|
from calibre.library.sqlite import connect, IntegrityError
|
||||||
from calibre.utils.search_query_parser import SearchQueryParser
|
from calibre.utils.search_query_parser import SearchQueryParser
|
||||||
from calibre.ebooks.metadata import string_to_authors, authors_to_string, MetaInformation
|
from calibre.ebooks.metadata import string_to_authors, authors_to_string, \
|
||||||
|
MetaInformation, authors_to_sort_string
|
||||||
from calibre.ebooks.metadata.meta import get_metadata, set_metadata, \
|
from calibre.ebooks.metadata.meta import get_metadata, set_metadata, \
|
||||||
metadata_from_formats
|
metadata_from_formats
|
||||||
from calibre.ebooks.metadata.opf2 import OPFCreator
|
from calibre.ebooks.metadata.opf2 import OPFCreator
|
||||||
@ -1197,11 +1198,17 @@ class LibraryDatabase2(LibraryDatabase):
|
|||||||
|
|
||||||
def import_book(self, mi, formats, notify=True):
|
def import_book(self, mi, formats, notify=True):
|
||||||
series_index = 1 if mi.series_index is None else mi.series_index
|
series_index = 1 if mi.series_index is None else mi.series_index
|
||||||
|
if not mi.title:
|
||||||
|
mi.title = _('Unknown')
|
||||||
if not mi.authors:
|
if not mi.authors:
|
||||||
mi.authors = [_('Unknown')]
|
mi.authors = [_('Unknown')]
|
||||||
aus = mi.author_sort if mi.author_sort else ', '.join(mi.authors)
|
aus = mi.author_sort if mi.author_sort else authors_to_sort_string(mi.authors)
|
||||||
|
if isinstance(aus, str):
|
||||||
|
aus = aus.decode(preferred_encoding, 'replace')
|
||||||
|
title = mi.title if isinstance(mi.title, unicode) else \
|
||||||
|
mi.title.decode(preferred_encoding, 'replace')
|
||||||
obj = self.conn.execute('INSERT INTO books(title, uri, series_index, author_sort) VALUES (?, ?, ?, ?)',
|
obj = self.conn.execute('INSERT INTO books(title, uri, series_index, author_sort) VALUES (?, ?, ?, ?)',
|
||||||
(mi.title, None, series_index, aus))
|
(title, None, series_index, aus))
|
||||||
id = obj.lastrowid
|
id = obj.lastrowid
|
||||||
self.data.books_added([id], self.conn)
|
self.data.books_added([id], self.conn)
|
||||||
self.set_path(id, True)
|
self.set_path(id, True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user