{ "info": { "author": "Pacharapol Withayasakpunt", "author_email": "patarapolw@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# ankisync\n\n[![PyPI version shields.io](https://img.shields.io/pypi/v/ankisync.svg)](https://pypi.python.org/pypi/ankisync/)\n[![PyPI license](https://img.shields.io/pypi/l/ankisync.svg)](https://pypi.python.org/pypi/ankisync/)\n\nDoing what AnkiConnect cannot do, including\n- Creating new `*.apkg`\n- Creating new note type / model\n- Upserting notes\n- Setting next review\n- Setting card statistics\n- Note ids to Card ids\n\nBut of course, this is very unsafe compared to pure AnkiConnect. I will not hold liability to damage it may cost.\n\n## Usage\n\nPlease close your `Anki` application first before doing this!\n\n```python\nfrom ankisync.anki import Anki\nwith Anki() as a:\n a.add_model(\n name='foo',\n fields=['field_a', 'field_b', 'field_c'],\n templates={\n 'Forward': (QUESTION1, ANSWER1),\n 'Reverse': (QUESTION2, ANSWER2)\n }\n )\n```\n\nMost of the other API's are similar to AnkiConnect, but `_by_id()`'s are preferred.\n\nCreating a new `*.apkg` is also possible.\n\n```python\nfrom ankisync.apkg import Apkg\nwith Apkg('bar.apkg') as a:\n model_id = a.init(\n first_model=dict(\n name='foo',\n fields=['field_a', 'field_b', 'field_c'],\n templates={\n 'Forward': (QUESTION1, ANSWER1),\n 'Reverse': (QUESTION2, ANSWER2)\n }\n ),\n first_deck='baz'\n )\n a.add_note({\n 'modelName': 'foo',\n 'deckId': 1, # \"Default\" deck\n 'fields': {\n 'field_a': 'aaaaa',\n 'field_b': 123 # Numbers will be converted to string.\n }\n })\n```\n\nFor the example of how I use it in action, see https://github.com/patarapolw/zhlib/blob/master/zhlib/export.py\n\n## Installation\n\n```\npip install ankisync\n```\n\n## Contributions\n\n- What features outside AnkiConnect (or inside) do you want? I will try to implement it.\n- Help me understand the documentations, [AnkiDroid Wiki](https://github.com/ankidroid/Anki-Android/wiki/Database-Structure), and [Anki decks collaboration Wiki](http://decks.wikia.com/wiki/Anki_APKG_format_documentation) \n- Please help me implement the `NotImplemented` methods.\n\n## Note\n\n- This is the successor to [AnkiTools](https://github.com/patarapolw/AnkiTools). I will not update it anymore.\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/patarapolw/ankisync", "keywords": "anki-flashcards", "license": "MIT", "maintainer": "Pacharapol Withayasakpunt", "maintainer_email": "patarapolw@gmail.com", "name": "ankisync", "package_url": "https://pypi.org/project/ankisync/", "platform": "", "project_url": "https://pypi.org/project/ankisync/", "project_urls": { "Homepage": "https://github.com/patarapolw/ankisync" }, "release_url": "https://pypi.org/project/ankisync/0.1.6.3/", "requires_dist": [ "importlib_resources (>=1.0,<2.0)", "peewee (>=3.7,<4.0)", "tinydb (>=3.11,<4.0)", "psutil (>=5.4,<6.0)", "appdirs (>=1.4,<2.0)" ], "requires_python": "", "summary": "Doing in Anki what AnkiConnect cannot do", "version": "0.1.6.3" }, "last_serial": 4451096, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "fa5763c9b32d53f06a743d8b69610ce9", "sha256": "4f74ca1de1a94e2ba5a75b868fc63c8272bcead98f30bf069084622ab47024ad" }, "downloads": -1, "filename": "ankisync-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa5763c9b32d53f06a743d8b69610ce9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 71649, "upload_time": "2018-10-31T07:43:01", "url": "https://files.pythonhosted.org/packages/dd/f5/2fc0b0efd11eccaa9027ebecfb1a55b2277404ac762ea8d1e445f55a7b36/ankisync-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "218ab566eafbeb9842bb0a529cbcb8a9", "sha256": "b372da53584b6dec5b4e14ac3ba5b45e570f51a1b3ede37a36ff313843239221" }, "downloads": -1, "filename": "ankisync-0.1.2.tar.gz", "has_sig": false, "md5_digest": "218ab566eafbeb9842bb0a529cbcb8a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19432, "upload_time": "2018-10-31T07:43:11", "url": "https://files.pythonhosted.org/packages/fe/94/fe81804198f56685b5000aa47dbbbb2864dc72c968b52b76d75626ed5b41/ankisync-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "3f3bcf0c6cd955155bbb18d19c921f19", "sha256": "147999895056b0c6d01383550240569e70fa418ae45f39dc250c6341a7478434" }, "downloads": -1, "filename": "ankisync-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3f3bcf0c6cd955155bbb18d19c921f19", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 76295, "upload_time": "2018-10-31T12:55:58", "url": "https://files.pythonhosted.org/packages/99/7a/2cef0bd01b23e1797d2879673d6aa205b6cb6e8530c9cbac4e1f8a9a6a9b/ankisync-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db071bb7bfcf8fb2234db0ddc2b1b6d8", "sha256": "9e8dc68852c90b0888544c531a04c2bc0452078507bdcaac93d898f68ac0ee44" }, "downloads": -1, "filename": "ankisync-0.1.4.tar.gz", "has_sig": false, "md5_digest": "db071bb7bfcf8fb2234db0ddc2b1b6d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20734, "upload_time": "2018-10-31T12:55:59", "url": "https://files.pythonhosted.org/packages/3a/56/59eb3a673d6070139ee167a7e421906a77ee1b847b6273efdce53130d05e/ankisync-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "13026c5120c79072b797098b472b9ad8", "sha256": "8762ee1eece993a84c8a682cff184a6d6c1a5a81c5612cec2e7a2489518ecd1b" }, "downloads": -1, "filename": "ankisync-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13026c5120c79072b797098b472b9ad8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 77667, "upload_time": "2018-11-01T02:10:06", "url": "https://files.pythonhosted.org/packages/ac/05/b1f1c7b5d67314555a6e81835c840f79a69f9f7500818152fecaf27338f8/ankisync-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2c9e39bf8ada0314ad7fc668b2adf21", "sha256": "11d4fe023ff1e235c55627453b1fdd840d81a439292af587db2988652cc7440c" }, "downloads": -1, "filename": "ankisync-0.1.5.tar.gz", "has_sig": false, "md5_digest": "b2c9e39bf8ada0314ad7fc668b2adf21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20269, "upload_time": "2018-11-01T02:10:08", "url": "https://files.pythonhosted.org/packages/0f/56/7f66c340821b9a2cf2e81ab2d0e86ed1ddc41ec249a5648761785d435167/ankisync-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "88031b57849ffec42dd5c175fe934cd3", "sha256": "b00454716f1521bc000fdd97f98ab407783fb4e99ec5f3649aaefbcdab8620f1" }, "downloads": -1, "filename": "ankisync-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "88031b57849ffec42dd5c175fe934cd3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 78071, "upload_time": "2018-11-01T02:57:01", "url": "https://files.pythonhosted.org/packages/00/0b/d451b87856734071ffb553929751be963decaae4e9a7066ab24462aea659/ankisync-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d14cbbbc5bcb69ef7846d56e2db559e4", "sha256": "5df84e2a09910fba0e552a24c16ed71b97900905a2be7700fe99d5005149cff3" }, "downloads": -1, "filename": "ankisync-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d14cbbbc5bcb69ef7846d56e2db559e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20352, "upload_time": "2018-11-01T02:57:03", "url": "https://files.pythonhosted.org/packages/60/35/111ac57d171a4602b38e4685bd1274c134810c16b77ed444802fb6d2a18f/ankisync-0.1.6.tar.gz" } ], "0.1.6.1": [ { "comment_text": "", "digests": { "md5": "097cdeabbce54b107942d4f7ed083d19", "sha256": "d6dcb28307da7dfba6b00bc73c948773325b08189df2c6fcc64945d9e03abd31" }, "downloads": -1, "filename": "ankisync-0.1.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "097cdeabbce54b107942d4f7ed083d19", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 78111, "upload_time": "2018-11-01T03:28:52", "url": "https://files.pythonhosted.org/packages/ad/a1/320853d84c236ddaf28ed9406d461e5e921d87e419e6c3cfc09dad6dfee8/ankisync-0.1.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23336ee868da174d14ba27e4b4f6f667", "sha256": "066ca28aefd8356a449f0af939b40ab31d126bb56a3c0b741d7939abccf747ce" }, "downloads": -1, "filename": "ankisync-0.1.6.1.tar.gz", "has_sig": false, "md5_digest": "23336ee868da174d14ba27e4b4f6f667", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20364, "upload_time": "2018-11-01T03:28:54", "url": "https://files.pythonhosted.org/packages/4f/cd/7eaa0082dfc2d1d75ba7d32e3ae67822c14a1cf89fcbe015db643c6820f7/ankisync-0.1.6.1.tar.gz" } ], "0.1.6.3": [ { "comment_text": "", "digests": { "md5": "e2579ce08616b3f821f5f26dcea4956f", "sha256": "55a1bd510f385ef0937c77d1e6dd517f4b3e465039046aafd7e030fff3bb4c0a" }, "downloads": -1, "filename": "ankisync-0.1.6.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2579ce08616b3f821f5f26dcea4956f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 78457, "upload_time": "2018-11-05T00:54:52", "url": "https://files.pythonhosted.org/packages/11/8c/0c5eb12905ffc3bf176be04e8040d671452f867922fa1b29c104031b02a3/ankisync-0.1.6.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1dfa4511c67fa2269e796b26f3f7a23a", "sha256": "c3bf2b1e1f6b976e22a86e5c68a607640f6e919fe271b89cb73dd53cf361219d" }, "downloads": -1, "filename": "ankisync-0.1.6.3.tar.gz", "has_sig": false, "md5_digest": "1dfa4511c67fa2269e796b26f3f7a23a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20309, "upload_time": "2018-11-05T00:54:54", "url": "https://files.pythonhosted.org/packages/bc/71/1dcd6b5cfee13f1ce1413047608f2cfef2dba00af9a5cebf1c8cf643803d/ankisync-0.1.6.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e2579ce08616b3f821f5f26dcea4956f", "sha256": "55a1bd510f385ef0937c77d1e6dd517f4b3e465039046aafd7e030fff3bb4c0a" }, "downloads": -1, "filename": "ankisync-0.1.6.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2579ce08616b3f821f5f26dcea4956f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 78457, "upload_time": "2018-11-05T00:54:52", "url": "https://files.pythonhosted.org/packages/11/8c/0c5eb12905ffc3bf176be04e8040d671452f867922fa1b29c104031b02a3/ankisync-0.1.6.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1dfa4511c67fa2269e796b26f3f7a23a", "sha256": "c3bf2b1e1f6b976e22a86e5c68a607640f6e919fe271b89cb73dd53cf361219d" }, "downloads": -1, "filename": "ankisync-0.1.6.3.tar.gz", "has_sig": false, "md5_digest": "1dfa4511c67fa2269e796b26f3f7a23a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20309, "upload_time": "2018-11-05T00:54:54", "url": "https://files.pythonhosted.org/packages/bc/71/1dcd6b5cfee13f1ce1413047608f2cfef2dba00af9a5cebf1c8cf643803d/ankisync-0.1.6.3.tar.gz" } ] }