mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #1014303 ([Enhancement] Have calibredb add command display the assigned calibre id)
This commit is contained in:
parent
574840f884
commit
5ab875378a
@ -243,20 +243,22 @@ def do_add(db, paths, one_book_per_directory, recurse, add_duplicates, otitle,
|
||||
metadata.append(mi)
|
||||
|
||||
file_duplicates = []
|
||||
added_ids = set()
|
||||
if files:
|
||||
file_duplicates = db.add_books(files, formats, metadata,
|
||||
add_duplicates=add_duplicates)
|
||||
if file_duplicates:
|
||||
file_duplicates = file_duplicates[0]
|
||||
|
||||
file_duplicates, ids = db.add_books(files, formats, metadata,
|
||||
add_duplicates=add_duplicates,
|
||||
return_ids=True)
|
||||
added_ids |= set(ids)
|
||||
|
||||
dir_dups = []
|
||||
for dir in dirs:
|
||||
if recurse:
|
||||
dir_dups.extend(db.recursive_import(dir, single_book_per_directory=one_book_per_directory))
|
||||
dir_dups.extend(db.recursive_import(dir,
|
||||
single_book_per_directory=one_book_per_directory,
|
||||
added_ids=added_ids))
|
||||
else:
|
||||
func = db.import_book_directory if one_book_per_directory else db.import_book_directory_multiple
|
||||
dups = func(dir)
|
||||
dups = func(dir, added_ids=added_ids)
|
||||
if not dups:
|
||||
dups = []
|
||||
dir_dups.extend(dups)
|
||||
@ -265,7 +267,8 @@ def do_add(db, paths, one_book_per_directory, recurse, add_duplicates, otitle,
|
||||
|
||||
if add_duplicates:
|
||||
for mi, formats in dir_dups:
|
||||
db.import_book(mi, formats)
|
||||
book_id = db.import_book(mi, formats)
|
||||
added_ids.add(book_id)
|
||||
else:
|
||||
if dir_dups or file_duplicates:
|
||||
print >>sys.stderr, _('The following books were not added as '
|
||||
@ -287,6 +290,9 @@ def do_add(db, paths, one_book_per_directory, recurse, add_duplicates, otitle,
|
||||
print >>sys.stderr, '\t\t ', path
|
||||
|
||||
write_dirtied(db)
|
||||
if added_ids:
|
||||
prints(_('Added book ids: %s')%(', '.join(map(type(u''),
|
||||
added_ids))))
|
||||
send_message()
|
||||
finally:
|
||||
sys.stdout = orig
|
||||
|
@ -3566,7 +3566,8 @@ books_series_link feeds
|
||||
for formats in books.values():
|
||||
yield formats
|
||||
|
||||
def import_book_directory_multiple(self, dirpath, callback=None):
|
||||
def import_book_directory_multiple(self, dirpath, callback=None,
|
||||
added_ids=None):
|
||||
from calibre.ebooks.metadata.meta import metadata_from_formats
|
||||
|
||||
duplicates = []
|
||||
@ -3577,13 +3578,15 @@ books_series_link feeds
|
||||
if self.has_book(mi):
|
||||
duplicates.append((mi, formats))
|
||||
continue
|
||||
self.import_book(mi, formats)
|
||||
book_id = self.import_book(mi, formats)
|
||||
if added_ids is not None:
|
||||
added_ids.add(book_id)
|
||||
if callable(callback):
|
||||
if callback(mi.title):
|
||||
break
|
||||
return duplicates
|
||||
|
||||
def import_book_directory(self, dirpath, callback=None):
|
||||
def import_book_directory(self, dirpath, callback=None, added_ids=None):
|
||||
from calibre.ebooks.metadata.meta import metadata_from_formats
|
||||
dirpath = os.path.abspath(dirpath)
|
||||
formats = self.find_books_in_directory(dirpath, True)
|
||||
@ -3595,17 +3598,21 @@ books_series_link feeds
|
||||
return
|
||||
if self.has_book(mi):
|
||||
return [(mi, formats)]
|
||||
self.import_book(mi, formats)
|
||||
book_id = self.import_book(mi, formats)
|
||||
if added_ids is not None:
|
||||
added_ids.add(book_id)
|
||||
if callable(callback):
|
||||
callback(mi.title)
|
||||
|
||||
def recursive_import(self, root, single_book_per_directory=True, callback=None):
|
||||
def recursive_import(self, root, single_book_per_directory=True,
|
||||
callback=None, added_ids=None):
|
||||
root = os.path.abspath(root)
|
||||
duplicates = []
|
||||
for dirpath in os.walk(root):
|
||||
res = self.import_book_directory(dirpath[0], callback=callback) if \
|
||||
single_book_per_directory else \
|
||||
self.import_book_directory_multiple(dirpath[0], callback=callback)
|
||||
res = (self.import_book_directory(dirpath[0], callback=callback,
|
||||
added_ids=added_ids) if single_book_per_directory else
|
||||
self.import_book_directory_multiple(dirpath[0],
|
||||
callback=callback, added_ids=added_ids))
|
||||
if res is not None:
|
||||
duplicates.extend(res)
|
||||
if callable(callback):
|
||||
|
Loading…
x
Reference in New Issue
Block a user