diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py index cf67cd6cfa..f8dd0693ea 100644 --- a/src/calibre/gui2/actions/add.py +++ b/src/calibre/gui2/actions/add.py @@ -22,6 +22,8 @@ from calibre.constants import preferred_encoding, filesystem_encoding from calibre.gui2.actions import InterfaceAction from calibre.gui2 import config, question_dialog from calibre.ebooks.metadata import MetaInformation +from calibre.utils.config import test_eight_code +from calibre.ebooks.metadata.sources.base import msprefs def get_filters(): return [ @@ -178,13 +180,26 @@ class AddAction(InterfaceAction): except IndexError: self.gui.library_view.model().books_added(self.isbn_add_dialog.value) self.isbn_add_dialog.accept() - orig = config['overwrite_author_title_metadata'] - config['overwrite_author_title_metadata'] = True - try: - self.gui.iactions['Edit Metadata'].do_download_metadata( - self.add_by_isbn_ids) - finally: - config['overwrite_author_title_metadata'] = orig + if test_eight_code: + orig = msprefs['ignore_fields'] + new = list(orig) + for x in ('title', 'authors'): + if x in new: + new.remove(x) + msprefs['ignore_fields'] = new + try: + self.gui.iactions['Edit Metadata'].download_metadata( + ids=self.add_by_isbn_ids) + finally: + msprefs['ignore_fields'] = orig + else: + orig = config['overwrite_author_title_metadata'] + config['overwrite_author_title_metadata'] = True + try: + self.gui.iactions['Edit Metadata'].do_download_metadata( + self.add_by_isbn_ids) + finally: + config['overwrite_author_title_metadata'] = orig return diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index e29e6c344d..fc663d268a 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -35,16 +35,23 @@ class EditMetadataAction(InterfaceAction): md.addAction(_('Edit metadata in bulk'), partial(self.edit_metadata, False, bulk=True)) md.addSeparator() - md.addAction(_('Download metadata and covers'), - partial(self.download_metadata, False, covers=True), + if test_eight_code: + dall = self.download_metadata + dident = partial(self.download_metadata, covers=False) + dcovers = partial(self.download_metadata, identify=False) + else: + dall = partial(self.download_metadata_old, False, covers=True) + dident = partial(self.download_metadata_old, False, covers=False) + dcovers = partial(self.download_metadata_old, False, covers=True, + set_metadata=False, set_social_metadata=False) + + md.addAction(_('Download metadata and covers'), dall, Qt.ControlModifier+Qt.Key_D) - md.addAction(_('Download only metadata'), - partial(self.download_metadata, False, covers=False)) - md.addAction(_('Download only covers'), - partial(self.download_metadata, False, covers=True, - set_metadata=False, set_social_metadata=False)) - md.addAction(_('Download only social metadata'), - partial(self.download_metadata, False, covers=False, + md.addAction(_('Download only metadata'), dident) + md.addAction(_('Download only covers'), dcovers) + if not test_eight_code: + md.addAction(_('Download only social metadata'), + partial(self.download_metadata_old, False, covers=False, set_metadata=False, set_social_metadata=True)) self.metadata_menu = md @@ -73,7 +80,16 @@ class EditMetadataAction(InterfaceAction): self.qaction.setEnabled(enabled) self.action_merge.setEnabled(enabled) - def download_metadata(self, checked, covers=True, set_metadata=True, + def download_metadata(self, identify=True, covers=True, ids=None): + if ids is None: + rows = self.gui.library_view.selectionModel().selectedRows() + if not rows or len(rows) == 0: + return error_dialog(self.gui, _('Cannot download metadata'), + _('No books selected'), show=True) + db = self.gui.library_view.model().db + ids = [db.id(row.row()) for row in rows] + + def download_metadata_old(self, checked, covers=True, set_metadata=True, set_social_metadata=None): rows = self.gui.library_view.selectionModel().selectedRows() if not rows or len(rows) == 0: