diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py
index 145d936f8..e5a18e4af 100755
--- a/ankiqt/ui/main.py
+++ b/ankiqt/ui/main.py
@@ -16,7 +16,7 @@ from anki import DeckStorage
from anki.errors import *
from anki.sound import hasSound, playFromText, clearAudioQueue
from anki.utils import addTags, deleteTags, parseTags, canonifyTags, stripHTML
-from anki.media import rebuildMediaDir
+from anki.media import rebuildMediaDir, downloadMissing
from anki.db import OperationalError, SessionHelper
from anki.stdmodels import BasicModel
from anki.hooks import runHook, addHook, removeHook, _hooks, wrap
@@ -2226,6 +2226,7 @@ it to your friends.
self.connect(m.actionFullDatabaseCheck, s, self.onCheckDB)
self.connect(m.actionOptimizeDatabase, s, self.onOptimizeDB)
self.connect(m.actionCheckMediaDatabase, s, self.onCheckMediaDB)
+ self.connect(m.actionDownloadMissingMedia, s, self.onDownloadMissingMedia)
self.connect(m.actionCram, s, self.onCram)
self.connect(m.actionOpenPluginFolder, s, self.onOpenPluginFolder)
self.connect(m.actionEnableAllPlugins, s, self.onEnableAllPlugins)
@@ -2674,6 +2675,17 @@ Consider backing up your media directory first."""))
ngettext("%d unused file removed.", "%d unused files removed.",
unused) % unused)
+ def onDownloadMissingMedia(self):
+ res = downloadMissing(self.deck)
+ if res is None:
+ ui.utils.showInfo(_("No media URLs defined for this deck."),
+ help="MediaSupport")
+ ui.utils.showInfo(_("%(a)d missing files found.
"
+ "%(b)d successfully retrieved.") % {
+ 'a': res[0],
+ 'b': res[1],
+ }, parent=self)
+
def addHook(self, *args):
addHook(*args)
diff --git a/designer/main.ui b/designer/main.ui
index 6336d811a..78871115e 100644
--- a/designer/main.ui
+++ b/designer/main.ui
@@ -2792,6 +2792,7 @@
+
@@ -3455,6 +3456,11 @@
Ctrl+R
+
+
+ Download Missing Media
+
+
newPerDay