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)
|
metadata.append(mi)
|
||||||
|
|
||||||
file_duplicates = []
|
file_duplicates = []
|
||||||
|
added_ids = set()
|
||||||
if files:
|
if files:
|
||||||
file_duplicates = db.add_books(files, formats, metadata,
|
file_duplicates, ids = db.add_books(files, formats, metadata,
|
||||||
add_duplicates=add_duplicates)
|
add_duplicates=add_duplicates,
|
||||||
if file_duplicates:
|
return_ids=True)
|
||||||
file_duplicates = file_duplicates[0]
|
added_ids |= set(ids)
|
||||||
|
|
||||||
|
|
||||||
dir_dups = []
|
dir_dups = []
|
||||||
for dir in dirs:
|
for dir in dirs:
|
||||||
if recurse:
|
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:
|
else:
|
||||||
func = db.import_book_directory if one_book_per_directory else db.import_book_directory_multiple
|
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:
|
if not dups:
|
||||||
dups = []
|
dups = []
|
||||||
dir_dups.extend(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:
|
if add_duplicates:
|
||||||
for mi, formats in dir_dups:
|
for mi, formats in dir_dups:
|
||||||
db.import_book(mi, formats)
|
book_id = db.import_book(mi, formats)
|
||||||
|
added_ids.add(book_id)
|
||||||
else:
|
else:
|
||||||
if dir_dups or file_duplicates:
|
if dir_dups or file_duplicates:
|
||||||
print >>sys.stderr, _('The following books were not added as '
|
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
|
print >>sys.stderr, '\t\t ', path
|
||||||
|
|
||||||
write_dirtied(db)
|
write_dirtied(db)
|
||||||
|
if added_ids:
|
||||||
|
prints(_('Added book ids: %s')%(', '.join(map(type(u''),
|
||||||
|
added_ids))))
|
||||||
send_message()
|
send_message()
|
||||||
finally:
|
finally:
|
||||||
sys.stdout = orig
|
sys.stdout = orig
|
||||||
|
@ -3566,7 +3566,8 @@ books_series_link feeds
|
|||||||
for formats in books.values():
|
for formats in books.values():
|
||||||
yield formats
|
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
|
from calibre.ebooks.metadata.meta import metadata_from_formats
|
||||||
|
|
||||||
duplicates = []
|
duplicates = []
|
||||||
@ -3577,13 +3578,15 @@ books_series_link feeds
|
|||||||
if self.has_book(mi):
|
if self.has_book(mi):
|
||||||
duplicates.append((mi, formats))
|
duplicates.append((mi, formats))
|
||||||
continue
|
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 callable(callback):
|
||||||
if callback(mi.title):
|
if callback(mi.title):
|
||||||
break
|
break
|
||||||
return duplicates
|
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
|
from calibre.ebooks.metadata.meta import metadata_from_formats
|
||||||
dirpath = os.path.abspath(dirpath)
|
dirpath = os.path.abspath(dirpath)
|
||||||
formats = self.find_books_in_directory(dirpath, True)
|
formats = self.find_books_in_directory(dirpath, True)
|
||||||
@ -3595,17 +3598,21 @@ books_series_link feeds
|
|||||||
return
|
return
|
||||||
if self.has_book(mi):
|
if self.has_book(mi):
|
||||||
return [(mi, formats)]
|
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):
|
if callable(callback):
|
||||||
callback(mi.title)
|
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)
|
root = os.path.abspath(root)
|
||||||
duplicates = []
|
duplicates = []
|
||||||
for dirpath in os.walk(root):
|
for dirpath in os.walk(root):
|
||||||
res = self.import_book_directory(dirpath[0], callback=callback) if \
|
res = (self.import_book_directory(dirpath[0], callback=callback,
|
||||||
single_book_per_directory else \
|
added_ids=added_ids) if single_book_per_directory else
|
||||||
self.import_book_directory_multiple(dirpath[0], callback=callback)
|
self.import_book_directory_multiple(dirpath[0],
|
||||||
|
callback=callback, added_ids=added_ids))
|
||||||
if res is not None:
|
if res is not None:
|
||||||
duplicates.extend(res)
|
duplicates.extend(res)
|
||||||
if callable(callback):
|
if callable(callback):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user