{ "info": { "author": "Max Kuznetsov", "author_email": "maks.kuznetsov@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3 :: Only", "Topic :: Multimedia :: Graphics :: Capture :: Scanners" ], "description": "--------\nScansort\n--------\n\n**Scansort** helps to collate and rename book scan images\n\n============\nInstallation\n============\n\n.. code-block::\n\n pip install scansort\n\n========\nSynopsis\n========\n\n.. code-block::\n\n scansort [-h] [-v]\n -odd ODD -even EVEN [-missing MISSING]\n [-action {move,copy}] [-o OUTPUT] workdir\n\n===========\nDesctiption\n===========\n\nWhen using a book-edge scanner (such as Plustek OpticBook),\nit is handy to scan two sides of a book separately.\nThis way you do not need to rotate the book to scan the next page.\nScanned images from different sides normally\nmake their way into separate directories.\n\n**Scansort** helps one to collate these directories\nand rename images accodring to the actual page numbers.\n\nThe utility assumes that:\n\n* The collection of images covers\n a monotonically increasing range of page numbers\n (with known missing numbers possible).\n This implies that front-, body-, and (possibly) back-matter\n must be scanned and processed separately.\n* Even- and odd-numbered pages are put into separate directories.\n\nAlso, see an example_ of the indented workflow.\n\n=======\nOptions\n=======\n\n``workdir`` argument defines a working directory\nrelative to which all other directory names and paths are interpreted.\nBy default the current directory is used.\n\nAll page numbers must correspond to\nthe actual \"physical\" page numbering in the book.\n\n``-odd, -even`` *directory name/path*\n Source directories with scanned images of odd- and even-numbered pages.\n\n``-missing`` *num[,num]\\**\n Comma-separated list of page numbers missing in the source directories\n (either accidentally skipped during scanning or not present at all).\n\n``-action`` *{move,copy}*\n Whether to preserve or delete the original images\n from the source directories. Defaults to ``copy``.\n\n``-o`` *directory name/path*\n Output directory for renamed scanned images. Defaults to ``out``\n and will be created automatically if does not exist.\n\n``-h, --help``\n Show a help message and exit.\n\n``-v, --version``\n Show a version information and exit.\n\n\n.. _example:\n\n=======\nExample\n=======\n\nAfter scanning a book I am normally left with something like this:\n\n.. code-block::\n\n $ tree ./book\n ./book\n \u251c\u2500\u2500 lside\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 scan0001.tiff\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 scan0002.tiff\n \u2502 ...\n \u2514\u2500\u2500 rside\n \u251c\u2500\u2500 scan0001.tiff\n \u251c\u2500\u2500 scan0002.tiff\n ...\n\n 2 directories, 198 files\n\nwhere ``rside`` contains even-numbered pages. Suppose I skimmed through\nthe directories and realised I missed two pages: 2 and 10.\n\nThen I run ``scansort`` to collate the directories:\n\n.. code-block::\n\n $ scansort -odd lside -even rside -missing 2,6 ./book\n\n\nThe utility opens an editor to review the result:\n\n.. code-block::\n\n # Please review the correspondence between files and book pages\n './book/lside/scan0001.tiff': 1\n './book/lside/scan0002.tiff': 3\n './book/rside/scan0001.tiff': 4\n './book/lside/scan0003.tiff': 5\n './book/lside/scan0004.tiff': 7\n './book/rside/scan0002.tiff': 8\n ...\n\nI can edit the page numbers right away\nor remove all lines to cancel the operation\n(e.g. if it turns out there are more pages missing).\nThen I save and close the editor and the pages are collated:\n\n.. code-block::\n\n $ tree ./book/out\n ./book/out\n \u251c\u2500\u2500 scan0001.tif\n \u251c\u2500\u2500 scan0003.tif\n \u251c\u2500\u2500 scan0004.tif\n \u251c\u2500\u2500 scan0005.tif\n \u251c\u2500\u2500 scan0007.tif\n ...\n \u2514\u2500\u2500 scan0200.tif\n\n 0 directories, 198 files\n\nNote that the missing page number are omitted. I can then scan those separately\nand put in place.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mkuznets/scansort", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "scansort", "package_url": "https://pypi.org/project/scansort/", "platform": "any", "project_url": "https://pypi.org/project/scansort/", "project_urls": { "Homepage": "https://github.com/mkuznets/scansort" }, "release_url": "https://pypi.org/project/scansort/0.1/", "requires_dist": [ "PyYAML" ], "requires_python": "", "summary": "Scansort helps to collate and rename book scan images", "version": "0.1" }, "last_serial": 2505441, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "853be1ae2f0c582173adeb0225b56c15", "sha256": "455c30e4147f17b70df005794ace58c3549c431490dbafa783a3e7c4ec0db849" }, "downloads": -1, "filename": "scansort-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "853be1ae2f0c582173adeb0225b56c15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4707, "upload_time": "2016-12-07T19:49:12", "url": "https://files.pythonhosted.org/packages/f4/7b/17d31c31b05817ca7be85d201b76cc991698d59c6b84192307be927e5508/scansort-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cbe8e751cd87932e4798d7b50c269bfa", "sha256": "8feddf48e47528a2e94084278c5da6ce07f9ee8f4322ba83997953cf4d7bdeb0" }, "downloads": -1, "filename": "scansort-0.1.tar.gz", "has_sig": false, "md5_digest": "cbe8e751cd87932e4798d7b50c269bfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4498, "upload_time": "2016-12-07T19:49:14", "url": "https://files.pythonhosted.org/packages/b5/44/18c5806b37e0f3bbd63b9a88544de08f3e7ce9ea2a5006b8bc913a60eb36/scansort-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "853be1ae2f0c582173adeb0225b56c15", "sha256": "455c30e4147f17b70df005794ace58c3549c431490dbafa783a3e7c4ec0db849" }, "downloads": -1, "filename": "scansort-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "853be1ae2f0c582173adeb0225b56c15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4707, "upload_time": "2016-12-07T19:49:12", "url": "https://files.pythonhosted.org/packages/f4/7b/17d31c31b05817ca7be85d201b76cc991698d59c6b84192307be927e5508/scansort-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cbe8e751cd87932e4798d7b50c269bfa", "sha256": "8feddf48e47528a2e94084278c5da6ce07f9ee8f4322ba83997953cf4d7bdeb0" }, "downloads": -1, "filename": "scansort-0.1.tar.gz", "has_sig": false, "md5_digest": "cbe8e751cd87932e4798d7b50c269bfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4498, "upload_time": "2016-12-07T19:49:14", "url": "https://files.pythonhosted.org/packages/b5/44/18c5806b37e0f3bbd63b9a88544de08f3e7ce9ea2a5006b8bc913a60eb36/scansort-0.1.tar.gz" } ] }