{ "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": "# Ankix\n\n[![PyPI version shields.io](https://img.shields.io/pypi/v/ankix.svg)](https://pypi.python.org/pypi/ankix/)\n[![PyPI license](https://img.shields.io/pypi/l/ankix.svg)](https://pypi.python.org/pypi/ankix/)\n\nNew file format for Anki with improved review intervals. Pure [peewee](https://github.com/coleifer/peewee) SQLite database, no zipfile. Available to work with on Jupyter Notebook.\n\n## Usage\n\nOn Jupyter Notebook,\n\n```python\n>>> from ankix import ankix, db as a\n>>> ankix.init('test.ankix') # A file named 'test.ankix' will be created.\n>>> ankix.import_apkg('foo.apkg') # Import the contents from 'foo.apkg'\n>>> iter_quiz = a.iter_quiz()\n>>> card = next(iter_quiz)\n>>> card\n'A flashcard is show on Jupyter Notebook. You can click to change card side, to answer-side.'\n'It is HTML, CSS, Javascript, Image enabled. Cloze test is also enabled. Audio is not yet tested.'\n>>> card.right() # Mark the card as right\n>>> card.wrong() # Mark the card as wrong\n>>> card.mark() # Add the tag 'marked' to the note.\n```\n\nYou can directly make use of Peewee capabilities,\n\n```python\n >>> a.Card.select().join(a.Note).where(a.Note.data['field_a'] == 'bar')[0]\n 'The front side of the card is shown.'\n```\n\n## Adding new cards\n\nAdding new cards is now possible. This has been tested in https://github.com/patarapolw/zhlib/blob/master/zhlib/export.py#L15\n\n```python\nfrom ankix import ankix, db as a\nankix.init('test.ankix')\na_model = a.Model.add(\n name='foo',\n templates=[\n a.TemplateMaker(\n name='Forward', \n question=Q_FORMAT,\n answer=A_FORMAT\n ),\n a.TemplateMaker(\n name='Reverse', \n question=Q_FORMAT,\n answer=A_FORMAT)\n ],\n css=CSS,\n js=JS\n)\n# Or, a_model = a.Model.get(name='foo')\nfor record in records:\n a.Note.add(\n data=record,\n model=a_model,\n card_to_decks={\n 'Forward': 'Forward deck',\n 'Reverse': 'Reverse deck'\n },\n tags=['bar', 'baz']\n )\n```\n\n## Installation\n\n```commandline\n$ pip install ankix\n```\n\n## Plans\n\n- Test by using it a lot.\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/ankix", "keywords": "anki,spaced-repetition,SRS", "license": "MIT", "maintainer": "Pacharapol Withayasakpunt", "maintainer_email": "patarapolw@gmail.com", "name": "ankix", "package_url": "https://pypi.org/project/ankix/", "platform": "", "project_url": "https://pypi.org/project/ankix/", "project_urls": { "Homepage": "https://github.com/patarapolw/ankix" }, "release_url": "https://pypi.org/project/ankix/0.2.0.1/", "requires_dist": [ "peewee (>=3.7,<4.0)", "tqdm (>=4.27,<5.0)", "mistune (>=0.8.4,<0.9.0)", "pytimeparse (>=1.1,<2.0)", "python-magic (>=0.4.15,<0.5.0)" ], "requires_python": "", "summary": "New file format for Anki with improved review intervals and Peewee SQLite powered", "version": "0.2.0.1" }, "last_serial": 4413855, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bc676ff610e01304147ea1510b7ee966", "sha256": "faf9067e8bf591a56acd720b6af5d040ad9064c0e1e082c74072a95c2303ba8b" }, "downloads": -1, "filename": "ankix-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc676ff610e01304147ea1510b7ee966", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18359, "upload_time": "2018-10-18T16:23:14", "url": "https://files.pythonhosted.org/packages/3a/cf/7ad74bab4f5c26721b9e220c27c1f36f7c15947acd29550266d3ee1642c9/ankix-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcf5f7a5e63639f71b27f02871fedb4b", "sha256": "6d6aa501bccf79a041178191c107aea88b3ffe3425b5b2780d69eca4b519c009" }, "downloads": -1, "filename": "ankix-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fcf5f7a5e63639f71b27f02871fedb4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6533, "upload_time": "2018-10-18T16:23:16", "url": "https://files.pythonhosted.org/packages/74/ea/c172fa1eb3b87ca1a59ee6a7f29040d0722a8b6cc45357b441594f636e7b/ankix-0.1.0.tar.gz" } ], "0.1.1.4": [ { "comment_text": "", "digests": { "md5": "57b7e1f011c6c44e80f7bd8442337eb6", "sha256": "afc3d9bab30e392c895491ea445eb189519748d88244c25e0f00c27dcc3c0f87" }, "downloads": -1, "filename": "ankix-0.1.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "57b7e1f011c6c44e80f7bd8442337eb6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20000, "upload_time": "2018-10-19T02:10:37", "url": "https://files.pythonhosted.org/packages/88/57/8b84b430532c52d81313e4eeb2e7896caf41510f82b4d2570ddc615301c8/ankix-0.1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ac62082dbbedfa2355670d2c57bba7a", "sha256": "f29ba4d4269c9c823620451faf54e4657204b29c0daf1669299fbde26084f02e" }, "downloads": -1, "filename": "ankix-0.1.1.4.tar.gz", "has_sig": false, "md5_digest": "4ac62082dbbedfa2355670d2c57bba7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6920, "upload_time": "2018-10-19T02:10:39", "url": "https://files.pythonhosted.org/packages/e6/58/2d2350290b230f9431041e21f75a29a000c51e65cdbf4093d0741bf274b4/ankix-0.1.1.4.tar.gz" } ], "0.1.2.10": [ { "comment_text": "", "digests": { "md5": "753a85c38a8b7882ec1acfa89a6f1c75", "sha256": "f38666b43d00a99229b949b6ed50c7675115ee26c60d6bfefa8d6d21cc1e5625" }, "downloads": -1, "filename": "ankix-0.1.2.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "753a85c38a8b7882ec1acfa89a6f1c75", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23239, "upload_time": "2018-10-19T05:35:57", "url": "https://files.pythonhosted.org/packages/01/c6/7649a270a37d62c392084707ba0ee3148301df1fb08034d2deb4f370696e/ankix-0.1.2.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdc46143cd8f148e563e185ccc701604", "sha256": "4b21846145cfb3a4af06e260939b576ce8499678091e48ae6587c505a2317b50" }, "downloads": -1, "filename": "ankix-0.1.2.10.tar.gz", "has_sig": false, "md5_digest": "cdc46143cd8f148e563e185ccc701604", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8042, "upload_time": "2018-10-19T05:35:58", "url": "https://files.pythonhosted.org/packages/5c/fb/8d1d19e6bb28bb41cf4c4557ea4c6a41226b0d6a062db648d0080b6ace4a/ankix-0.1.2.10.tar.gz" } ], "0.1.2.2": [ { "comment_text": "", "digests": { "md5": "0c594fba3d17afbdd2ec8a69eb321243", "sha256": "592da6a084666455b65ca39c7ba26975f29731205ce9a5fd38dffea1094be01f" }, "downloads": -1, "filename": "ankix-0.1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0c594fba3d17afbdd2ec8a69eb321243", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22965, "upload_time": "2018-10-19T05:07:30", "url": "https://files.pythonhosted.org/packages/f4/a1/f41f70270775a7d8ad03d75e6a1de95b10712cd8077c47c41b3aee4ff8fa/ankix-0.1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a87752fcd3e678bbe71041febdd4940", "sha256": "7e470bc2e35bcde61453b11e5fd092dc24c66eadc7c819687aca37b04d4d8e89" }, "downloads": -1, "filename": "ankix-0.1.2.2.tar.gz", "has_sig": false, "md5_digest": "7a87752fcd3e678bbe71041febdd4940", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7941, "upload_time": "2018-10-19T05:07:31", "url": "https://files.pythonhosted.org/packages/9e/32/10881c0a92f5fcfb3f5f93e5a473c80bc3cd887f654743a33977316b708a/ankix-0.1.2.2.tar.gz" } ], "0.1.2.3": [ { "comment_text": "", "digests": { "md5": "46d19568a3db93b883d5ec9c18803035", "sha256": "a36b5494c96ca9e025ec37eaa00eea8ad10c5e611de66c9c5f97c78b4789788f" }, "downloads": -1, "filename": "ankix-0.1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "46d19568a3db93b883d5ec9c18803035", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22921, "upload_time": "2018-10-19T05:11:47", "url": "https://files.pythonhosted.org/packages/66/5f/253c1352412c51bc5f6f46c6b5b988a5cfd6a18bdb8cd09d9b154b2cef72/ankix-0.1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a08fed1622d0c1ed27a13b44d36591ba", "sha256": "dcf62c8081663b63f694db12e271c4561f5da3e4f0e7e254ca87d8fb52a4acfa" }, "downloads": -1, "filename": "ankix-0.1.2.3.tar.gz", "has_sig": false, "md5_digest": "a08fed1622d0c1ed27a13b44d36591ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7942, "upload_time": "2018-10-19T05:11:49", "url": "https://files.pythonhosted.org/packages/67/35/1f334ef2b409aa35b39b661c5f060b89bb9a9f994efcb29fa684be2095b3/ankix-0.1.2.3.tar.gz" } ], "0.1.2.4": [ { "comment_text": "", "digests": { "md5": "8b601241fdab6d4634077452e4966642", "sha256": "f86c889bf61ea99904aaf72b33ca8640f759096269ea2095d1bd27f75ced2455" }, "downloads": -1, "filename": "ankix-0.1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8b601241fdab6d4634077452e4966642", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22934, "upload_time": "2018-10-19T05:18:16", "url": "https://files.pythonhosted.org/packages/4b/27/060dcb20cff8576304a344a31f3d59b79dde69a132a55355b0534549799b/ankix-0.1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab9b2c87c0685367882e44f8add06b1b", "sha256": "2cd31e02f1e1cf231874a11706745cdecc146d9260670cd2019c9a0f92e9eee4" }, "downloads": -1, "filename": "ankix-0.1.2.4.tar.gz", "has_sig": false, "md5_digest": "ab9b2c87c0685367882e44f8add06b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7937, "upload_time": "2018-10-19T05:18:17", "url": "https://files.pythonhosted.org/packages/61/3f/10578b3894b94b44b3b96a082f3d58ed12edd5198238fdc900df9bddb9ed/ankix-0.1.2.4.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "49b4236a77f867aa2b9b8bf42960ba9a", "sha256": "1ef15778e09d0ff36a3d4c80da7d858005a2a353c5223bc2d686f3387778b89f" }, "downloads": -1, "filename": "ankix-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "49b4236a77f867aa2b9b8bf42960ba9a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23085, "upload_time": "2018-10-19T07:41:34", "url": "https://files.pythonhosted.org/packages/22/c6/d238b697a8b8742f270f25ffbed6443464ef133686579d6005cfd2e0d245/ankix-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27b4602ccaf78038f58caf3d5447f3d9", "sha256": "90ce3e22354c17631677451c4eef664f7fe9ec00a66dc82e12f37284cdbe73dc" }, "downloads": -1, "filename": "ankix-0.1.3.tar.gz", "has_sig": false, "md5_digest": "27b4602ccaf78038f58caf3d5447f3d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8008, "upload_time": "2018-10-19T07:41:39", "url": "https://files.pythonhosted.org/packages/96/81/a34b7f6b7f4736f4cafaa8140bb8312cea0c754bbee275d49642ae37059a/ankix-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "ee6f7101d6c8dc60976b5a4f8b755a0e", "sha256": "a0907b8a2b7076d22aeb391e717cbe03667f11530a3fd0affe832b377cbf62cd" }, "downloads": -1, "filename": "ankix-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ee6f7101d6c8dc60976b5a4f8b755a0e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25469, "upload_time": "2018-10-19T11:18:46", "url": "https://files.pythonhosted.org/packages/dc/21/f1a8f48f70f4b59a423b1cb20a7ec8390b3d543246a19e09e1bbc58fe8f2/ankix-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "714294c0df7add6a9d7b4a5059a0bcb7", "sha256": "ee0f7944f6d584b872036a6d7cf89ff763bf4eaacf1e580e5bf21f10ea152344" }, "downloads": -1, "filename": "ankix-0.1.4.tar.gz", "has_sig": false, "md5_digest": "714294c0df7add6a9d7b4a5059a0bcb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8628, "upload_time": "2018-10-19T11:18:47", "url": "https://files.pythonhosted.org/packages/ce/88/6583e1caba6b78441d85f68411880c36d39f5c4d2d28efbcaa34104328cd/ankix-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "a6d6d9a3e7dece50b59ca99b8165065e", "sha256": "07fdaca57109fe1f4b0bae5b148b92ae5ed3ed34bb1993e737a1c68b4ef1b580" }, "downloads": -1, "filename": "ankix-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a6d6d9a3e7dece50b59ca99b8165065e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29580, "upload_time": "2018-10-22T08:26:52", "url": "https://files.pythonhosted.org/packages/26/53/8cb6a94c671ee42a243d69718e9f01e4e897972190dfc1332f6a1c92e469/ankix-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a065ec23027551db7e0dfb2ecb384a93", "sha256": "83fc21ea0cf1c02c22cd1cb71c83f6176af79f904d045a5027c5215ba7851cdc" }, "downloads": -1, "filename": "ankix-0.1.5.tar.gz", "has_sig": false, "md5_digest": "a065ec23027551db7e0dfb2ecb384a93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9413, "upload_time": "2018-10-22T08:26:53", "url": "https://files.pythonhosted.org/packages/2d/ac/33dfec098b3537883604e9bbbc6be74fbd976e11f0b9a7fe5c964007caf6/ankix-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "8a04ccf4da0856eee87d828f92ab8174", "sha256": "79eee9fc2712cbe5c2736f11c8c6063b5d40e73b3b41a54bd2d44a0a988796e6" }, "downloads": -1, "filename": "ankix-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8a04ccf4da0856eee87d828f92ab8174", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37315, "upload_time": "2018-10-23T15:51:11", "url": "https://files.pythonhosted.org/packages/c8/52/55a2c15e847c4ccffe8727571740449f3a6b33be996402a291b97acd09f5/ankix-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e86705437a395169f02de49ceb2a71d", "sha256": "5f87cc88974db4ff7225f7276f19ca926efdac27eb6c6d4d9c0426ae51ab86f8" }, "downloads": -1, "filename": "ankix-0.1.6.tar.gz", "has_sig": false, "md5_digest": "4e86705437a395169f02de49ceb2a71d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11055, "upload_time": "2018-10-23T15:51:13", "url": "https://files.pythonhosted.org/packages/bf/9b/5936a67d744c62e9b75977d7ad00a682b1a135f01904088c6dda46e5db7a/ankix-0.1.6.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "11b56a3e238fe714261ef111535b82fd", "sha256": "cacf7349bca7ba1d8d6aba5889f78dd25e8f22c1a15ca095bee32752294f4462" }, "downloads": -1, "filename": "ankix-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11b56a3e238fe714261ef111535b82fd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36156, "upload_time": "2018-10-25T05:30:11", "url": "https://files.pythonhosted.org/packages/14/97/5612cf0b10d3c4f281a393a8ec517135860e1884ae3f6876355b02bb91ef/ankix-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "299a3f17ddf132e042c4f8c1e8cf4fea", "sha256": "d0ee528379941c5aff7ef8683c0ab9c9c2a469ed41f3dd999da32ed5887aa403" }, "downloads": -1, "filename": "ankix-0.2.tar.gz", "has_sig": false, "md5_digest": "299a3f17ddf132e042c4f8c1e8cf4fea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11136, "upload_time": "2018-10-25T05:30:15", "url": "https://files.pythonhosted.org/packages/2e/a9/a2969f2a65895b8474a4f1c0ff8e48d72c4c6d957dcd33530426ab0f3f7f/ankix-0.2.tar.gz" } ], "0.2.0.1": [ { "comment_text": "", "digests": { "md5": "6fab395b035497f17d70d47e5c470bf8", "sha256": "aaff0191160481e6d6b4c279418d8e5d95e95a159f1f511294673b25edb4d661" }, "downloads": -1, "filename": "ankix-0.2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6fab395b035497f17d70d47e5c470bf8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36292, "upload_time": "2018-10-25T06:16:06", "url": "https://files.pythonhosted.org/packages/3a/73/dcdb892ae584277326452f804201595e09ebf8ed61fc8e3fc6abbbe78d7f/ankix-0.2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07079a76c8331ea7e4c5811f7bb879b3", "sha256": "006a71fc3e65f4f743f6834070a8832f264356c38451a2679ad732dfd3c90a43" }, "downloads": -1, "filename": "ankix-0.2.0.1.tar.gz", "has_sig": false, "md5_digest": "07079a76c8331ea7e4c5811f7bb879b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11153, "upload_time": "2018-10-25T06:16:08", "url": "https://files.pythonhosted.org/packages/a3/82/72828e6fa09f5d98f8c148fbd17e7476763ea5f570fb0a83e99849555bdd/ankix-0.2.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6fab395b035497f17d70d47e5c470bf8", "sha256": "aaff0191160481e6d6b4c279418d8e5d95e95a159f1f511294673b25edb4d661" }, "downloads": -1, "filename": "ankix-0.2.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6fab395b035497f17d70d47e5c470bf8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36292, "upload_time": "2018-10-25T06:16:06", "url": "https://files.pythonhosted.org/packages/3a/73/dcdb892ae584277326452f804201595e09ebf8ed61fc8e3fc6abbbe78d7f/ankix-0.2.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07079a76c8331ea7e4c5811f7bb879b3", "sha256": "006a71fc3e65f4f743f6834070a8832f264356c38451a2679ad732dfd3c90a43" }, "downloads": -1, "filename": "ankix-0.2.0.1.tar.gz", "has_sig": false, "md5_digest": "07079a76c8331ea7e4c5811f7bb879b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11153, "upload_time": "2018-10-25T06:16:08", "url": "https://files.pythonhosted.org/packages/a3/82/72828e6fa09f5d98f8c148fbd17e7476763ea5f570fb0a83e99849555bdd/ankix-0.2.0.1.tar.gz" } ] }