Minimal wrapper to simplify the usage of the awesome ankiconnect anki addon. I made this in about an hour to make it easy to interact with anki from my many python projects (see my other repos), as well as from the command line.
python -m pip install py-ankiconnect
or git clone followed bypython -m pip install -e .
- You can either call it using
py_ankiconnect
orpython -m py_ankiconnect
. - To see the help:
py_ankiconnect --help
(this will either print it usingrich
if installed or using the pager.) - Examples:
- Get the list of tags:
py_ankiconnect getTags | jq
- Get info about Clozolkor:
py_ankiconnect findModelsByName --modelNames ["Clozolkor"] | jq
- You can even use pipes:
py_ankiconnect findNotes --query '*test*' | jq -c '.[0:10]' | py_ankiconnect notesInfo --notes -
(you have to use '-', if will be replaced by the content of sys.stdin)
- Get the list of tags:
from py_ankiconnect import PyAnkiconnect
akc = PyAnkiconnect()
# ^ You can set a different port or host there directly:
# akc = PyAnkiconnect(default_port=your_port)
# trigger a sync:
result = akc("sync")
# Get the list of all tags:
result = akc("getTags")
# Do some more advanced stuff:
akc(
action="changeDeck",
params={
"cards": [
1502098034045,
1502098034048,
1502298033753
],
"deck": "Japanese::JLPT N3"
},
)
# It supports async mode. By default it will try async or sync depending on who calls it, but you can set force_async_mode to always use async.
import asyncio
akc = PyAnkiconnect(force_async_mode=True, limit_concurrency=50)
async def main():
return await akc("getTags")
asyncio.run(main())