diff --git a/AnkiConnect.py b/AnkiConnect.py index f323d50..f1e0aec 100644 --- a/AnkiConnect.py +++ b/AnkiConnect.py @@ -375,6 +375,17 @@ class AnkiBridge: return note + def addTags(self, notes, tags, add=True): + aqt.mw.col.tags.bulkAdd(notes, tags, add) + + + def suspend(self, cards, suspend=True): + if suspend: + aqt.mw.col.sched.suspendCards(cards) + else: + aqt.mw.col.sched.unsuspendCards(cards) + + def startEditing(self): self.window().requireReset() @@ -449,6 +460,20 @@ class AnkiBridge: return deck['name'] + def findNotes(self, query=None): + if query is not None: + return aqt.mw.col.findNotes(query) + else: + return [] + + + def findCards(self, query=None): + if query is not None: + return aqt.mw.col.findCards(query) + else: + return [] + + def guiBrowse(self, query=None): browser = aqt.dialogs.open('Browser', self.window()) browser.activateWindow() @@ -463,13 +488,6 @@ class AnkiBridge: return browser.model.cards - def browse(self, query=None): - if query is not None: - return aqt.mw.col.findCards(query) - else: - return [] - - def guiAddCards(self): addCards = aqt.dialogs.open('AddCards', self.window()) addCards.activateWindow() @@ -662,6 +680,26 @@ class AnkiConnect: return results + @webApi + def addTags(self, notes, tags, add=True): + return self.anki.addTags(notes, tags, add) + + + @webApi + def removeTags(self, notes, tags): + return self.anki.addTags(notes, tags, False) + + + @webApi + def suspend(self, cards, suspend=True): + return self.anki.suspend(cards, suspend) + + + @webApi + def unsuspend(self, cards): + return self.anki.suspend(cards, False) + + @webApi def upgrade(self): response = QMessageBox.question( @@ -691,13 +729,18 @@ class AnkiConnect: @webApi - def guiBrowse(self, query=None): - return self.anki.guiBrowse(query) + def findNotes(self, query=None): + return self.anki.findNotes(query) @webApi - def browse(self, query=None): - return self.anki.browse(query) + def findCards(self, query=None): + return self.anki.findCards(query) + + + @webApi + def guiBrowse(self, query=None): + return self.anki.guiBrowse(query) @webApi diff --git a/README.md b/README.md index a824339..980f4fe 100644 --- a/README.md +++ b/README.md @@ -305,14 +305,115 @@ Below is a list of currently supported actions. Requests with invalid actions or ] ``` -* **guiBrowse** +* **addTags** - Invokes the card browser and searches for a given query. Returns an array of identifiers of the cards that were found. + Adds tags to notes by note ID. *Sample request*: ``` { - "action": "guiBrowse", + "action": "addTags", + "params": { + "notes": [1483959289817, 1483959291695], + "tags": "european-languages" + } + } + ``` + + *Sample response*: + ``` + null + ``` + +* **removeTags** + + Remove tags from notes by note ID. + + *Sample request*: + ``` + { + "action": "removeTags", + "params": { + "notes": [1483959289817, 1483959291695], + "tags": "european-languages" + } + } + ``` + + *Sample response*: + ``` + null + ``` + +* **suspend** + + Suspend cards by card ID. + + *Sample request*: + ``` + { + "action": "suspend", + "params": { + "cards": [1483959291685, 1483959293217] + } + } + ``` + + *Sample response*: + ``` + null + ``` + +* **unsuspend** + + Unsuspend cards by card ID. + + *Sample request*: + ``` + { + "action": "unsuspend", + "params": { + "cards": [1483959291685, 1483959293217] + } + } + ``` + + *Sample response*: + ``` + null + ``` + +* **findNotes** + + Returns an array of note IDs for a given query (same query syntax as **guiBrowse**). + + *Sample request*: + ``` + { + "action": "findCards", + "params": { + "query": "deck:current" + } + } + ``` + + *Sample response*: + ``` + [ + 1483959289817, + 1483959291695 + ] + ``` + +* **findCards** + + Returns an array of card IDs for a given query (functionally identical to **guiBrowse** but doesn't use the GUI + for better performance). + + *Sample request*: + ``` + { + "action": "findCards", "params": { "query": "deck:current" } @@ -328,14 +429,14 @@ Below is a list of currently supported actions. Requests with invalid actions or ] ``` -* **browse** +* **guiBrowse** - Functionally identical to **guiBrowse**, but accesses the database without using the GUI for increased performance. + Invokes the card browser and searches for a given query. Returns an array of identifiers of the cards that were found. *Sample request*: ``` { - "action": "browse", + "action": "guiBrowse", "params": { "query": "deck:current" }