diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 6d7fd63378..459585a589 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -175,6 +175,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): md.addSeparator() md.addAction(_('Download metadata and covers')) md.addAction(_('Download only metadata')) + md.addAction(_('Download only covers')) self.metadata_menu = md self.add_menu = QMenu() self.add_menu.addAction(_('Add books from a single directory')) @@ -205,6 +206,10 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): partial(self.download_metadata, covers=True)) QObject.connect(md.actions()[5], SIGNAL('triggered(bool)'), partial(self.download_metadata, covers=False)) + QObject.connect(md.actions()[6], SIGNAL('triggered(bool)'), + partial(self.download_metadata, covers=True, + set_metadata=False)) + self.save_menu = QMenu() @@ -836,7 +841,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): ############################### Edit metadata ############################## - def download_metadata(self, checked, covers=True): + def download_metadata(self, checked, covers=True, set_metadata=True): rows = self.library_view.selectionModel().selectedRows() previous = self.library_view.currentIndex() if not rows or len(rows) == 0: @@ -847,10 +852,12 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): db = self.library_view.model().db ids = [db.id(row.row()) for row in rows] from calibre.gui2.metadata import DownloadMetadata - self._download_book_metadata = DownloadMetadata(db, ids, get_covers=covers) + self._download_book_metadata = DownloadMetadata(db, ids, + get_covers=covers, set_metadata=set_metadata) self._download_book_metadata.start() + x = _('covers') if covers and not set_metadata else _('metadata') self.progress_indicator.start( - _('Downloading metadata for %d book(s)')%len(ids)) + _('Downloading %s for %d book(s)')%(x, len(ids))) self._book_metadata_download_check = QTimer(self) self.connect(self._book_metadata_download_check, SIGNAL('timeout()'), self.book_metadata_download_check) diff --git a/src/calibre/gui2/metadata.py b/src/calibre/gui2/metadata.py index 607fd6a41b..247880d7b0 100644 --- a/src/calibre/gui2/metadata.py +++ b/src/calibre/gui2/metadata.py @@ -41,11 +41,12 @@ class Worker(Thread): class DownloadMetadata(Thread): - def __init__(self, db, ids, get_covers): + def __init__(self, db, ids, get_covers, set_metadata=True): Thread.__init__(self) self.setDaemon(True) self.metadata = {} self.covers = {} + self.set_metadata = set_metadata self.db = db self.updated = set([]) self.get_covers = get_covers @@ -96,8 +97,9 @@ class DownloadMetadata(Thread): self.commit_covers() self.commit_covers(True) - for id in self.fetched_metadata: - self.db.set_metadata(id, self.metadata[id]) + if self.set_metadata: + for id in self.fetched_metadata: + self.db.set_metadata(id, self.metadata[id]) self.updated = set(self.fetched_metadata)