{ "info": { "author": "David Snopek", "author_email": "dsnopek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Education", "Topic :: Education :: Computer Aided Instruction (CAI)", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Utilities" ], "description": "Anki Server\n===========\n\n`Anki `_ is a powerful Open Source flashcard\napplication, which helps you quickly and easily memorize facts over\nthe long term utilizing a spaced repetition algorithm.\n\nAnki's main form is a desktop application (for Windows, Linux and\nMacOS) which can sync to a web version (AnkiWeb) and mobile versions\nfor Android and iOS.\n\nThis is a personal Anki Server, which you can sync against instead of\nAnkiWeb.\n\nIt also includes a RESTful API, so that you could implement your\nown AnkiWeb-like site if you wanted.\n\nIt was originally developed to support the flashcard functionality on\n`Bibliobird `_, a web application for\nlanguage learning.\n\nInstalling the easy way!\n------------------------\n\nIf you have ``easy_install`` or ``pip`` on your system, you can\nsimply run::\n\n $ easy_install AnkiServer\n\nOr using ``pip``::\n\n $ pip install AnkiServer\n\nThis will give you the latest released version!\n\nHowever, if you want to try the latest bleeding edge version OR you\nwant to help with development, you'll need to install from source.\nIn that case, follow the instructions in the next two sections.\n\nSetting up a virtualenv\n-----------------------\n\nIf you want to install your Anki Server in an isolated Python\nenvironment using\n`virtualenv `_, please\nfollow these instructions before going on to the next section. If\nnot, just skip to the \"Installing\" section below.\n\nThere are many reasons for installing into a virtualenv, rather\nthan globally on your system:\n\n\n- You can keep the Anki Server's dependencies seperate from other\n Python applications.\n\n- You don't have permission to install globally on your system\n (like on a shared host).\n\nHere are step-by-step instruction for setting up your virtualenv:\n\n1. First, you need to install \"virtualenv\". If your system has\n ``easy_install`` or ``pip``, this is just a matter of::\n\n $ easy_install virtualenv\n\n Or using pip::\n\n $ pip install virtualenv\n\n Or you can use your the package manager provided by your OS.\n\n2. Next, create your a Python environment for running AnkiServer::\n\n $ virtualenv AnkiServer.env\n\n3. (Optional) Enter the virtualenv to save you on typing::\n\n $ . AnkiServer.env/bin/activate\n\n\nIf you skip step 3, you'll have to type\n``AnkiServer.env/bin/python`` instead of ``python`` and\n``AnkiServer.env/bin/paster`` instead of ``paster`` in the following\nsections.\n\nAlso, remember that the environment change in step 3 only lasts as\nlong as your current terminal session. You'll have to re-enter the\nenvironment if you enter that terminal and come back later.\n\nInstalling your Anki Server from source\n---------------------------------------\n\n1. Install all the dependencies we need using ``easy_install`` or\n ``pip``::\n\n $ easy_install webob PasteDeploy PasteScript sqlalchemy simplejson\n\n Or using pip::\n\n $ pip install webob PasteDeploy PasteScript sqlalchemy simplejson\n\n Or you can use your the package manager provided by your OS.\n\n2. Download and install libanki. You can find the latest release of\n Anki here:\n\n http://code.google.com/p/anki/downloads/list\n\n Look for a \\*.tgz file with a Summary of \"Anki Source\". At the time\n of this writing that is anki-2.0.11.tgz.\n\n Download this file and extract.\n\n Then either:\n\n a. Run the 'make install', or\n\n b. Copy the entire directory to /usr/share/anki\n\n3. Make the egg info files (so paster can see our app)::\n\n $ python setup.py egg_info\n\nConfiguring and running your Anki Server\n----------------------------------------\n\n1. Copy the example.ini to production.ini in your current directory\n and edit for your needs.\n\n a. If you installed from source, it'll be at the top-level.\n\n b. If you installed via 'easy_install' or 'pip', you'll find all\n the example configuration at\n ``python_prefix/lib/python2.X/site-packages/AnkiServer-2.X.X-py2.X.egg/examples``\n (replacing ``python_prefix`` with the root of your Python and\n all the ``X`` with the correct versions). For example, it could\n be::\n\n /usr/lib/python2.7/site-packages/AnkiServer-2.0.0a6-py2.7.egg/examples/example.ini\n\n3. Create user::\n\n $ ./ankiserverctl.py adduser \n\n4. Test the server by starting it debug mode::\n\n $ ./ankiserverctl.py debug\n \n If the output looks good, you can stop the server by pressing Ctrl-C and start it again in normal mode::\n\n $ ./ankiserverctl.py start\n\n To stop AnkiServer, run::\n\n $ ./ankiserverctl.py stop\n\nPoint the Anki desktop program at it\n------------------------------------\n\nUnfortunately, there isn't currently any user interface in the Anki\ndestop program to point it at your personal sync server instead of\nAnkiWeb, so you'll have to write a short \"addon\".\n\nCreate a file like this in your Anki/addons folder called\n\"mysyncserver.py\"::\n\n import anki.sync\n anki.sync.SYNC_BASE = 'http://127.0.0.1:27701/'\n anki.sync.SYNC_MEDIA_BASE = 'http://127.0.0.1:27701/msync/'\n\nBe sure to change the SYNC_URL to point at your sync server. The\naddress ``127.0.0.1`` refers to the local computer.\n\nRestart Anki for your plugin to take effect. Now, everytime you sync,\nit will be to your personal sync server rather than AnkiWeb.\n\nHowever, if you just want to switch temporarily, rather than creating\nan addon, you can set the ``SYNC_URL`` environment variable when\nrunning from the command-line (on Linux)::\n\n export SYNC_URL=http://127.0.0.1:27701/sync/\n ./runanki &\n\nPoint the mobile apps at it\n---------------------------\n\nAt the moment, there isn't any way to get AnkiDroid or the Anki iOS\napp to point at your personal sync server. :-/\n\nHowever, there are an issue open on AnkiDroid about it:\n\n- `Option to sync with personal sync server \u00b7 Issue #1057\n `_\n\nIf you're interested in seeing this feature, please go to this link\nand let the maintainers know!\n\nRunning with Supervisor\n-----------------------\n\nIf you want to run your Anki server persistantly on a Linux (or\nother UNIX-y) server, `Supervisor `_ is a\ngreat tool to monitor and manage it. It will allow you to start it\nwhen your server boots, restart it if it crashes and easily access\nit's logs.\n\n1. Install Supervisor on your system. If it's Debian or Ubuntu this\n will work::\n\n $ sudo apt-get install supervisor\n\n If you're using a different OS, please try\n `these instructions `_.\n\n2. Copy ``supervisor-anki-server.conf`` to ``/etc/supervisor/conf.d/anki-server.conf``::\n\n $ sudo cp supervisor-anki-server.conf /etc/supervisor/conf.d/anki-server.conf\n\n3. Modify ``/etc/supervisor/conf.d/anki-server.conf`` to match your\n system and how you setup your Anki Server in the section above.\n\n4. Reload Supervisor's configuration::\n\n $ sudo supervisorctl reload\n\n5. Check the logs from the Anki Server to make sure everything is\n fine::\n\n $ sudo supervisorctl tail anki-server\n\n If it's empty - then everything's fine! Otherwise, you'll see an\n error message.\n\nLater if you manually want to stop, start or restart it, you can\nuse::\n\n $ sudo supervisorctl stop anki-server\n\n $ sudo supervisorctl start anki-server\n\n $ sudo supervisorctl restart anki-server\n\nSee the `Supervisor documentation `_ for\nmore info!\n\nUsing with Apache\n-----------------\n\nIf you're already serving your website via Apache (on port 80) and\nwant to also allow users to sync against a URL on port 80, you can\nforward requests from Apache to the Anki server.\n\nOn Bibliobird.com, I have a special anki.bibliobird.com virtual host\nwhich users can synch against. Here is an excerpt from my Apache\nconf::\n\n \n ServerAdmin support@lingwo.org\n ServerName anki.bibliobird.com\n\n # The Anki server handles gzip itself!\n SetEnv no-gzip 1\n\n \n ProxyPass http://localhost:27701/\n ProxyPassReverse http://localhost:27701/\n \n \n\nIt may also be possible to use `mod_wsgi\n`_, however, I have no experience\nwith that.\n\nHow to get help\n---------------\n\nIf you're having any problems installing or using Anki Server, please\npost a message on our Google Group:\n\nhttps://groups.google.com/forum/#!forum/anki-sync-server\n\nBe sure to let us know which operating system and version you're using\nand how you intend to use the Anki Server!", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dsnopek/anki-sync-server", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "AnkiServer", "package_url": "https://pypi.org/project/AnkiServer/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/AnkiServer/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/dsnopek/anki-sync-server" }, "release_url": "https://pypi.org/project/AnkiServer/2.0.6/", "requires_dist": null, "requires_python": null, "summary": "A personal Anki sync server (so you can sync against your own server rather than AnkiWeb)", "version": "2.0.6" }, "last_serial": 2044514, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "c43aebd936648f32439bd8a537ca2ecd", "sha256": "51d1f03c1639e60777a3141bd8ee3de29947ee410d8dead0b49c86a933806af2" }, "downloads": -1, "filename": "AnkiServer-2.0.0.tar.gz", "has_sig": false, "md5_digest": "c43aebd936648f32439bd8a537ca2ecd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 917832, "upload_time": "2013-09-17T15:36:27", "url": "https://files.pythonhosted.org/packages/a7/69/f2feb3b1312b85e13820f6a18deff81ee1e60b5512c037ec1dd58b808afe/AnkiServer-2.0.0.tar.gz" } ], "2.0.0a1": [], "2.0.0a2": [ { "comment_text": "", "digests": { "md5": "18a792724f5c61b89384fb84d38c4ca7", "sha256": "1690ef22595452d4ee4e9f2c31d13e7d5e7014bf2a3fe3d17eba40c347aa916d" }, "downloads": -1, "filename": "AnkiServer-2.0.0a2.tar.gz", "has_sig": false, "md5_digest": "18a792724f5c61b89384fb84d38c4ca7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18198, "upload_time": "2013-09-09T18:01:23", "url": "https://files.pythonhosted.org/packages/de/ec/e1e7a5e7d660e868649a5eaa4afb2fad0d08d84eb93c8f88aba4d82dcc2e/AnkiServer-2.0.0a2.tar.gz" } ], "2.0.0a3": [ { "comment_text": "", "digests": { "md5": "a067f49ba2af187e0b2442d36f3c6ee4", "sha256": "0270a4d47550b45fdc957f61e5db86002d7734d890bba02fa10dc44e778ce9e8" }, "downloads": -1, "filename": "AnkiServer-2.0.0a3.tar.gz", "has_sig": false, "md5_digest": "a067f49ba2af187e0b2442d36f3c6ee4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18119, "upload_time": "2013-09-09T18:19:51", "url": "https://files.pythonhosted.org/packages/40/99/7b5e0c9e540da842598b73498c0cda863b439110abb0ac12d58105f45a24/AnkiServer-2.0.0a3.tar.gz" } ], "2.0.0a4": [ { "comment_text": "", "digests": { "md5": "93ce569f194a01296e599f29b9be8ef0", "sha256": "c147f15ac8ddca167813f2addd198661af0b6d8333ba557cc41bedcedd1b40a2" }, "downloads": -1, "filename": "AnkiServer-2.0.0a4.tar.gz", "has_sig": false, "md5_digest": "93ce569f194a01296e599f29b9be8ef0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21214, "upload_time": "2013-09-10T23:15:24", "url": "https://files.pythonhosted.org/packages/e5/c3/5811aff6e1ad1dc4323fbd3939eaea2566a74ae051e8bee53179c90ff494/AnkiServer-2.0.0a4.tar.gz" } ], "2.0.0a5": [ { "comment_text": "", "digests": { "md5": "c69f57b191f12fb05eb384e113152b10", "sha256": "041afb5d34ba7a8ba0fcb808cd6d921651919edb480e137343112e7727a0ce99" }, "downloads": -1, "filename": "AnkiServer-2.0.0a5.tar.gz", "has_sig": false, "md5_digest": "c69f57b191f12fb05eb384e113152b10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 915919, "upload_time": "2013-09-11T14:38:51", "url": "https://files.pythonhosted.org/packages/ca/51/95ebda1852703ff332604f5caed00e6a37be28eb33cf5d242b1df51d1772/AnkiServer-2.0.0a5.tar.gz" } ], "2.0.0a6": [ { "comment_text": "", "digests": { "md5": "cab11b8a2c2a86c41bd892e1962bbb51", "sha256": "1d1b2639b2fa8039d35ba214d3c59f6ab816061542c038b384ff448e0a555b41" }, "downloads": -1, "filename": "AnkiServer-2.0.0a6.tar.gz", "has_sig": false, "md5_digest": "cab11b8a2c2a86c41bd892e1962bbb51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2308256, "upload_time": "2013-09-12T14:09:37", "url": "https://files.pythonhosted.org/packages/9e/1b/d1c83317135ab32a7cfdc0dd6f78022421b8ed8e06d240908f150b8d62f6/AnkiServer-2.0.0a6.tar.gz" } ], "2.0.0a7": [ { "comment_text": "", "digests": { "md5": "3d83c83487784a9169b484d1566b5cf7", "sha256": "51cf8fcf8cc3a7ab6403e3c9bff8566e1b8e908c580705f037c692aa04412f6c" }, "downloads": -1, "filename": "AnkiServer-2.0.0a7.tar.gz", "has_sig": false, "md5_digest": "3d83c83487784a9169b484d1566b5cf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2309815, "upload_time": "2013-09-12T21:33:36", "url": "https://files.pythonhosted.org/packages/91/ac/75c9c19a57dd48b7243346cb59ddf3e2a7bfe591f8616b1bc4d2eff9c25b/AnkiServer-2.0.0a7.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "2be27633610a2a3207c6383b423b431e", "sha256": "6b9ea21553477dd4cb36e52fb6e54ec5b61b086bdc6f6e69f4a0ccdce1f4b162" }, "downloads": -1, "filename": "AnkiServer-2.0.1.tar.gz", "has_sig": false, "md5_digest": "2be27633610a2a3207c6383b423b431e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 930946, "upload_time": "2013-09-24T11:04:59", "url": "https://files.pythonhosted.org/packages/df/24/644bb8a36884926e0267a919d970019cab673604ac59b195729b556b20a8/AnkiServer-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "c1ee2e01bc7433b69d1dd094cab9ffce", "sha256": "276627e0e27501838926c3e0d5b5a4e7f8a4a817279ecb56b2923e48e75d8149" }, "downloads": -1, "filename": "AnkiServer-2.0.2.tar.gz", "has_sig": false, "md5_digest": "c1ee2e01bc7433b69d1dd094cab9ffce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 931348, "upload_time": "2013-10-07T20:49:15", "url": "https://files.pythonhosted.org/packages/d1/d4/b801f572f602740a31ba47a12a476b3b94dfc55f847b4d14ca9d51673762/AnkiServer-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "e7ac15e3bacc3be3a6b6962bd97b93e8", "sha256": "5d05c611da8319e20c1c0237aa753b71a15efd3bd506221a5b0e851ab3eec666" }, "downloads": -1, "filename": "AnkiServer-2.0.3.tar.gz", "has_sig": false, "md5_digest": "e7ac15e3bacc3be3a6b6962bd97b93e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2542394, "upload_time": "2013-11-27T14:57:08", "url": "https://files.pythonhosted.org/packages/08/7b/78c6f9a7593b22dcd2702036587eac21235446123fe77698135e5ac81722/AnkiServer-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "6704879fecc47366658e1f5e49c5cba0", "sha256": "d0ff44efeb2789d7fedd84fc6b2c64c197e035dcd85ef102528947010051080b" }, "downloads": -1, "filename": "AnkiServer-2.0.4.tar.gz", "has_sig": false, "md5_digest": "6704879fecc47366658e1f5e49c5cba0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2542392, "upload_time": "2013-12-06T11:54:31", "url": "https://files.pythonhosted.org/packages/b0/62/98b29a8785abbff40fd8b7b82d6f614551fdd79253bffb5dff0d7f09cb75/AnkiServer-2.0.4.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "6ec91b6b9a0b2e8a906b651c8248113a", "sha256": "72933d06b59565446d0e4fba1e8e2845bc2e7e77dea4f09f81a3eecef28472c1" }, "downloads": -1, "filename": "AnkiServer-2.0.5.tar.gz", "has_sig": false, "md5_digest": "6ec91b6b9a0b2e8a906b651c8248113a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2646054, "upload_time": "2013-12-31T23:15:57", "url": "https://files.pythonhosted.org/packages/27/14/8076a0f4be8ea3fb2a91ef88462eeb3afdd0ef77532f42e90ab31b14aa0f/AnkiServer-2.0.5.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "75850da56df9b191deff153157f2f813", "sha256": "5a985ed2835cabe9db7de47ff4d7dcdd8d58fd1f5c064ae98e66a44aafa52dee" }, "downloads": -1, "filename": "AnkiServer-2.0.6.tar.gz", "has_sig": false, "md5_digest": "75850da56df9b191deff153157f2f813", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 941484, "upload_time": "2016-04-04T11:36:53", "url": "https://files.pythonhosted.org/packages/fd/7c/a1b356f10bdcf2810cacd4e5bd468ce098916aa3f15c7689dfbb04dfb296/AnkiServer-2.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "75850da56df9b191deff153157f2f813", "sha256": "5a985ed2835cabe9db7de47ff4d7dcdd8d58fd1f5c064ae98e66a44aafa52dee" }, "downloads": -1, "filename": "AnkiServer-2.0.6.tar.gz", "has_sig": false, "md5_digest": "75850da56df9b191deff153157f2f813", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 941484, "upload_time": "2016-04-04T11:36:53", "url": "https://files.pythonhosted.org/packages/fd/7c/a1b356f10bdcf2810cacd4e5bd468ce098916aa3f15c7689dfbb04dfb296/AnkiServer-2.0.6.tar.gz" } ] }