{ "info": { "author": "patarapolw", "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": "# pdf-shuffle\n\n[![PyPI version shields.io](https://img.shields.io/pypi/v/pdf_shuffle.svg)](https://pypi.python.org/pypi/pdf_shuffle/)\n[![PyPI license](https://img.shields.io/pypi/l/pdf_shuffle.svg)](https://pypi.python.org/pypi/pdf_shuffle/)\n\nA PDF page/image randomizer, or flashcard quiz from a PDF. Or randomize files from a folder.\n\n## Installation\n\n```\n$ pip install pdf-shuffle\n```\n\n## Usage\n\npdf-shuffle comes with 2 CLI applications:\n\n```\n$ pdf-shuffle --help\nUsage: pdf-shuffle [OPTIONS] FILENAME\n\nOptions:\n --start INTEGER\n --end TEXT\n --step INTEGER\n --random / --no-random\n --host TEXT\n --port INTEGER\n --help Show this message and exit.\n$ pdf-shuffle test.pdf\n```\n\nAnd,\n\n```\n$ pdf-quiz --help\nUsage: pdf-quiz [OPTIONS] FILENAME\n\nOptions:\n --start INTEGER\n --end TEXT\n --step INTEGER\n --random / --no-random\n --host TEXT\n --port INTEGER\n --help Show this message and exit.\n$ pdf-quiz quiz.pdf\n```\n\nOf course, you can invoke the app from a Python script as well.\n\n```python\nfrom pdf_shuffle import init\ninit('test.pdf')\n```\n\nOr,\n\n```python\nfrom pdf_shuffle import init_quiz\ninit_quiz('quiz.pdf')\n```\n\nYou can also random files in a folder:\n\n```python\nfrom pdf_shuffle import init\ninit('test/')\n```\n\n## Advanced usage\n\nBy default, `quiz.pdf` means, excluding the first slide, every first and second slides are front of the card and back of the card, respectively. You can change that, with:\n\n```python\nimport os, json\nos.environ['PAGE_RANDOM'] = json.dumps([2, 3, 5, 9, 12])\n```\n\n## Spaced-repetition system (SRS)\n\nIf you are looking into extending the app with SRS, you might try, [srs-sqlite](https://github.com/patarapolw/srs-sqlite), which I currently use.\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/pdf-shuffle", "keywords": "pdf,flashcard", "license": "MIT", "maintainer": "patarapolw", "maintainer_email": "patarapolw@gmail.com", "name": "pdf-shuffle", "package_url": "https://pypi.org/project/pdf-shuffle/", "platform": "", "project_url": "https://pypi.org/project/pdf-shuffle/", "project_urls": { "Homepage": "https://github.com/patarapolw/pdf-shuffle" }, "release_url": "https://pypi.org/project/pdf-shuffle/0.2.1/", "requires_dist": [ "flask (>=1.0,<2.0)", "click (>=7.0,<8.0)" ], "requires_python": "", "summary": "A PDF page/image randomizer, or flashcard quiz from a PDF.", "version": "0.2.1" }, "last_serial": 4356014, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "554da73c05d82b6a5df276340896ab2e", "sha256": "e93700914accda79361e8b747dfa2b2081e1bf2d434d32cd12348483dbf386eb" }, "downloads": -1, "filename": "pdf_shuffle-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "554da73c05d82b6a5df276340896ab2e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13367, "upload_time": "2018-09-04T14:12:59", "url": "https://files.pythonhosted.org/packages/fc/cd/66a2d54285cc9e1f421aea1fd3532dad9fa0a663ac87e2199afce545692f/pdf_shuffle-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2950f5f793667b94edb51a666b8c5149", "sha256": "1c79786e8a4a76d4d3dde207e33dab9469a89250bfb0a45100040b69d6eef452" }, "downloads": -1, "filename": "pdf-shuffle-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2950f5f793667b94edb51a666b8c5149", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5554, "upload_time": "2018-09-04T14:12:58", "url": "https://files.pythonhosted.org/packages/5a/a9/4793fc1f0e8a0805346405d8891aabb7cc5c4a6bfe24fa34f9768b707eaa/pdf-shuffle-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9391e55f81b1d232729d1ae591e2411a", "sha256": "1ec2f8ef68f2a6e90d5d30e1832f6b259c171d948edca937eb986136e4f4a42c" }, "downloads": -1, "filename": "pdf_shuffle-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9391e55f81b1d232729d1ae591e2411a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13417, "upload_time": "2018-09-04T18:01:11", "url": "https://files.pythonhosted.org/packages/57/7c/0d759c0eff1aefde6020eedb6cabfe294e8c3b5d3e6af8bcd1b7f2385da9/pdf_shuffle-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e039f8c6d908cfea08f1274ae421f2b", "sha256": "557e9003bd557c1778612740ea3dfb634db54ac1801f31612b0bac6251a4ca1c" }, "downloads": -1, "filename": "pdf-shuffle-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9e039f8c6d908cfea08f1274ae421f2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5564, "upload_time": "2018-09-04T18:01:09", "url": "https://files.pythonhosted.org/packages/5c/c5/4d53203ea6f9c613ed74ebecd9c7b04211148740c3127283c270b30385c1/pdf-shuffle-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "44a33fa40eb4c607dbff220b407c1ec4", "sha256": "5ca89fe246970ca33860a812e075270474ad46acc4cf2280f3573799b7dfe179" }, "downloads": -1, "filename": "pdf_shuffle-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "44a33fa40eb4c607dbff220b407c1ec4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13474, "upload_time": "2018-09-05T06:23:12", "url": "https://files.pythonhosted.org/packages/ee/ad/f0d731b95760c36d6d887b78d29587d6283bc8f5dff3544c7ba1b6851265/pdf_shuffle-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ae8a6f6f5fdb9d0573d97460ff6dc84", "sha256": "18f2f757f4dd7031fba10f2d3477fc7ae81f3e1ff2fdaf0bdd7efaa8cee8415b" }, "downloads": -1, "filename": "pdf-shuffle-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1ae8a6f6f5fdb9d0573d97460ff6dc84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5667, "upload_time": "2018-09-05T06:23:10", "url": "https://files.pythonhosted.org/packages/ff/83/eeaf5a6a0ed2bb8437eb0415d3f8005d2f5fe75866cda7ccf8b50f65ec15/pdf-shuffle-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a721c23a5f245e5c4d388e8c6952becc", "sha256": "6fa57456cd6d2837c331473a0f585485cbcd918abedd7a1a22a2c51351c91026" }, "downloads": -1, "filename": "pdf_shuffle-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a721c23a5f245e5c4d388e8c6952becc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14929, "upload_time": "2018-09-06T16:22:23", "url": "https://files.pythonhosted.org/packages/af/93/42bbb28490dd9bdd7d835c025deed90b906339f3261d55e82a8b05a0b265/pdf_shuffle-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "742c08dc5293680be449d488d16ec43c", "sha256": "d855ba2cbe359709e5ec75d6ba3be05d1e4935e5c44febad8b48d98ad4210f1d" }, "downloads": -1, "filename": "pdf-shuffle-0.2.0.tar.gz", "has_sig": false, "md5_digest": "742c08dc5293680be449d488d16ec43c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6113, "upload_time": "2018-09-06T16:22:21", "url": "https://files.pythonhosted.org/packages/96/20/310c91aafcb46766d907050ba713304b78837db2ee423d875277aa0d76fe/pdf-shuffle-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "98071a87a14725b720085883f3d09a57", "sha256": "f80cfdb81e8bd986b2baf7d048a3bd4f5ed972bcdbfba95efa4061b452e6e775" }, "downloads": -1, "filename": "pdf_shuffle-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "98071a87a14725b720085883f3d09a57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14933, "upload_time": "2018-10-09T14:20:06", "url": "https://files.pythonhosted.org/packages/81/93/dc1494eff1ac133f36d82fbfe9a8d01b0e0d0d97fd6e133344f6c8a65f4c/pdf_shuffle-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3902718d2694add903d4c9d95610546", "sha256": "e9420ccc11414d4e5fa78642c54491fed750b1e0a8b7e7215d5abdaf045b93ab" }, "downloads": -1, "filename": "pdf-shuffle-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c3902718d2694add903d4c9d95610546", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6122, "upload_time": "2018-10-09T14:20:05", "url": "https://files.pythonhosted.org/packages/0a/9c/d04dcb22bf548e05ca23a47680f94a5ceaa60c151997f009a3fe549d3851/pdf-shuffle-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "98071a87a14725b720085883f3d09a57", "sha256": "f80cfdb81e8bd986b2baf7d048a3bd4f5ed972bcdbfba95efa4061b452e6e775" }, "downloads": -1, "filename": "pdf_shuffle-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "98071a87a14725b720085883f3d09a57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14933, "upload_time": "2018-10-09T14:20:06", "url": "https://files.pythonhosted.org/packages/81/93/dc1494eff1ac133f36d82fbfe9a8d01b0e0d0d97fd6e133344f6c8a65f4c/pdf_shuffle-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3902718d2694add903d4c9d95610546", "sha256": "e9420ccc11414d4e5fa78642c54491fed750b1e0a8b7e7215d5abdaf045b93ab" }, "downloads": -1, "filename": "pdf-shuffle-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c3902718d2694add903d4c9d95610546", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6122, "upload_time": "2018-10-09T14:20:05", "url": "https://files.pythonhosted.org/packages/0a/9c/d04dcb22bf548e05ca23a47680f94a5ceaa60c151997f009a3fe549d3851/pdf-shuffle-0.2.1.tar.gz" } ] }