{ "info": { "author": "Jeremy Ottesen", "author_email": "jotaro0010@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Programming Language :: Python" ], "description": "pyAniSort\n=========\n\npyAniSort is a command line utility that will sort and rename anime\nvideo files into folders separated by the name of the series.\n\nI made this as a way to practice python. Filename matching is not the most accurate and it will overwrite existing files without asking for confirmation. I plan on rewriting the program eventually so I will not be doing any more updates.\n\nUsage\n-----\n\n| There are two different commands that pyAnisort has:\n| The first being ``sort``\n| And the second ``undo``\n\nThe sort command\n~~~~~~~~~~~~~~~~\n\nThe sort command requires two arguments the from directory and the to\ndirectory\n\n| The verify option will check the CRC's of the files before and after\nsorting to verify file integrity\n| ``-v, --verify`` Will compare the crc's of the file before and after\nthe move\n\n| The copy option will copy files rather than move them. Copied files\nwill not be reflected in the history csv file\n| ``-c, --copy`` Will copy files instead of move them(history.csv will\nnot be updated)\n\n| The silent option turns off any parts of the script that would ask for\nuser input\n| ``-s, --silent`` Turn off console interactivity\n\n| The history argument takes the name of a csv file that will store the\nrenaming history\n| ``--history FILE`` changes where to save history file ('history.csv'\nis the default)\n\n``$ pyAniSort sort 'from/directory' 'to/directory' -s --history history.csv``\n\nThe program will sort this:\n\n::\n\n |-- From Folder/\n | | [Sub Group A] Series Name - 01 [ABCD1234].mkv\n | | [Sub Group A] Series Name - 02 [ABCD1234].mkv\n | | [Sub Group A] Series Name - 03 [ABCD1234].mkv\n | | [Sub Group B] Other Series Name Ep01 [ABCD1234].mkv\n | | [Sub Group B] Other Series Name Ep02 [ABCD1234].mkv\n | | [Sub Group B] Other Series Name Ep03 [ABCD1234].mkv\n | | [Sub Group B] Other Series Name OP [ABCD1234].mkv\n | | [Sub Group B] Other Series Name ED1 [ABCD1234].mkv\n\nTo This:\n\n::\n\n |-- To Folder/\n | |-- Series Name/\n | | |-- Series Name - 01 - title.mkv\n | | |-- Series Name - 02 - title.mkv\n | | |-- Series Name - 03 - title.mkv\n | |-- Other Series Name/\n | | |-- Other Series Name - 01 - title.mkv\n | | |-- Other Series Name - 02 - title.mkv\n | | |-- Other Series Name - 03 - title.mkv\n | | |-- Other Series Name - OP01.mkv\n | | |-- Other Series Name - ED01.mkv\n\nThe undo command\n~~~~~~~~~~~~~~~~\n\nThe undo command will use the history.csv file to undo the sorting\noperation in case there was an error.\n\nThere are two required positional arguments that are required for the\nundo command\n\n| The verify option will check the CRC's of the files before and after\nsorting to verify file integrity\n| ``-v, --verify`` Will compare the crc's of the file before and after\nthe move\n\n| The history argument takes the name of a csv file that will store the\nrenaming history\n| ``--history FILE`` changes where to save history file ('history.csv'\nis the default)\n\n``$ pyanisort undo startLine endLine --history history.csv``\n\n| The first one will tell the program what line of the file to start on\nand the second will tell it what line to end on.\n| This allows better control of what files to undo\n\n| Running the following command will start undoing the files stored in\nhistory.csv from line 30 to line 40, or until the end of the file if\nthere are less than 40 lines.\n| ``$ pyanisort undo 30 40``\n\n| this next command will undo all of the files stored in the history.csv\nfile.\n| ``$ pyanisort undo 0 0``\n\n| Both of the following commands will only undo the file at line 44 of\nthe history.csv file\n| ``$ pyanisort undo 44 44``\n| ``$ pyanisort undo 44 0``\n\nAfter any one of these commands are used the history.csv file will be\nmodified to reflect the undo operation.\n\nLogs and other Important Files\n------------------------------\n\n| Logs and program data is stored in the following locations:\n| Windows: ``%APPDATA%\\pyAniSort``\n| Linux: ``~/.pyanisort``\n\n| There are two files that are automatically created when pyAniSort is\nrun.\n| prefNames.csv and history.csv\n\n``prefNames.csv`` - Prefered show names\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n| This file is for storing information about the show. This helps save\ntime when gathering show information multiple times.\n| There are three values stored in the csv file the **anime ID (aid)**,\n**official show name**, and the **parsed name**\n\n| The **aid** is the unique id that the anidb database uses for the show\n| The **official show name** is the full series name pulled from the\nanidb.\n| It is also the name that will be used when renaming and sorting the\nvideo files.\n| The **parsed name** is the name that has been pulled from the filename\nbefore it was sorted.\n\n+--------+----------------------------------------------------------------------------+----------------------+\n| aid | Official Name | Parsed Name |\n+========+============================================================================+======================+\n| 9541 | Shingeki no Kyojin | Shingeki no Kyojin |\n+--------+----------------------------------------------------------------------------+----------------------+\n| 9787 | Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru | NouCome |\n+--------+----------------------------------------------------------------------------+----------------------+\n\nThis is the contents of prefNames.csv that match the table\n\n::\n\n prefName.csv\n 9541,Shingeki no Kyojin,Shingeki no Kyojin\n 9787,\"Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru\",NouCome\n\n--------------\n\nOne of the useful things about putting this information in a csv file\nlike this is that the changes can be made to it outside of the program.\n\n| For example:\n| The official name of ``NouCome`` above is quite a mouthfull. It also\ntakes up a lot of space and might even make new filenames run into the\n255 character limit on windows.\n\n| So wouldn't it be better if you could change this:\n| ``Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru``\n\n| To it's shorthand name:\n| ``NouCome``\n\nYou can do this by editing the ``prefName.csv`` file. I suggest using a\nstandard text editor than Excel. Excel might mess up the file and cause\na problem when the program reads it.\n\nSo you would edit the ``prefName.csv`` file from:\n\n::\n\n prefName.csv\n 9541,Shingeki no Kyojin,Shingeki no Kyojin\n 9787,\"Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru\",NouCome\n\nTo this:\n\n::\n\n prefName.csv\n 9541,Shingeki no Kyojin,Shingeki no Kyojin\n 9787,\"NouCome\",NouCome\n\nNow when the program goes to rename your files it will use ``NouCome``\ninstead of\n``Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru``\n\n``history.csv`` - File rename history\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are two columns in the history.csv file. The first refers to the\noriginal location of a video file and the second refers to the sorted\nlocation\n\n+----------------------------------------------------------------------+--------------------------------------------------------------------+\n| Original Name | Sorted Name |\n+======================================================================+====================================================================+\n| D:\\\\test\\_files[Sub Group A] Series Name - 01 [ABCD1234].mkv | D:\\\\Anime\\\\Series Name\\\\Series Name - 01 - title.mkv |\n+----------------------------------------------------------------------+--------------------------------------------------------------------+\n| D:\\\\test\\_files[Sub Group B] Other Series Name Ep01 [ABCD1234].mkv | D:\\\\Anime\\\\Other Series Name\\\\Other Series Name - 01 - title.mkv |\n+----------------------------------------------------------------------+--------------------------------------------------------------------+\n\nThis is an example ot the contents of history.csv useing real filenames\n\n::\n\n history.csv\n D:\\test_files\\[EveTaku] Shingeki no Kyojin - 25 (1280x720 x264-Hi10P AAC)[783716E5].mkv,D:\\Anime\\Shingeki no Kyojin\\Shingeki no Kyojin - 25 - The Wall Raid on Stohess District (3).mkv\n D:\\test_files\\[Irrational Typesetting Wizardry] NouCome - 01 [F87C6CC0].mkv,\"D:\\Anime\\Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru\\Ore no Nounai Sentakushi ga, Gakuen Lovecome o Zenryoku de Jama Shiteiru - 01 - That Choice Put My Life in Motion.mkv\"\n\nInstallation\n------------\n\n| Link to PyPI page: https://pypi.python.org/pypi/pyAniSort\n| There is also a windows installation binary if you don't want to\ninstall pip.\n\n| Make sure that you are using the python3 version of pip when\ninstalling.\n| This program only works with python3\n\n``$ pip install pyanisort``\n\n| If you don't have pip installed you can run these commands from the\nterminal to get it\n| ``$ sudo curl http://python-distribute.org/distribute_setup.py | python3``\n| ``$ sudo curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python3``\n\nPossible Errors\n---------------\n\nThere are a few possible errors that may occur when running this script\n\nBanned\n''''''\n\n``0000-00-00 00:00:00,000 - pyanisort.findtitle - ERROR - findtitle : 62 - Error parsing through cache\\0000.xml.gz: Banned``\n\n| This means that the anidb.net server has gotten too many requests from\nthe machines IP address.\n| It will refuse any more connections for the next couple hours.\n\nThis is a security measure put in place by the server and I have not\nfound any other method of getting around it other than by waiting a\ncouple hours to run the script again\n\nContact Me\n----------\n\nQuestions or comments about ``pyAniSort``? send me an email at\n`jotaro0010@gmail.com `__.\npyAniSort 1.0.3 (February 23, 2014)\n-----------------------------------\n\n- Added an option to compare CRC's of files before and after they are\n sorted to verify integrity of file transfers\n- An option that has the program copy files rather than move them.\n copied files are not reflected in the history file\n- Will now detect if the file is an opening or ending song and will\n rename it accordingly\n- Will save a file with traceback if an unexpected error occurs\n\npyAniSort 1.0.2 (February 11, 2014)\n-----------------------------------\n\n- Program files are now created and saved to ~/.pyanisort on Linux and\n %APPDATA%\\\\pyAniSort on windows\n- Short pause between downloads of series xml files. this will help\n prevent temp bans - February 12, 2014\n- Fixed bugs with program data creation on Linux - February 12, 2014\n\npyAniSort 1.0.1 (February 09, 2014)\n-----------------------------------\n\n- Restructured program so that it could be downloaded and installed\n through the Python Package Index\n- Created setup.py and init.py\n- Program now changes working directory to program location to use data\n files stored there\n\npyAniSort 1.0.0 (February 06, 2014)\n-----------------------------------\n\n- Initial upload", "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/jotaro0010/pyanisort", "keywords": null, "license": "MIT Software License", "maintainer": null, "maintainer_email": null, "name": "pyAniSort", "package_url": "https://pypi.org/project/pyAniSort/", "platform": "any", "project_url": "https://pypi.org/project/pyAniSort/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/jotaro0010/pyanisort" }, "release_url": "https://pypi.org/project/pyAniSort/1.0.4/", "requires_dist": null, "requires_python": null, "summary": "Automatically sorts anime using information from anidb.net", "version": "1.0.4" }, "last_serial": 1566393, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "b473ed8a70988c9efacc5abfe7693075", "sha256": "16b3fdb2375336dc9b561d2ad13b9e8861d285d6ebe65b81cdaa2751a87f175f" }, "downloads": -1, "filename": "pyAniSort-1.0-py3.3.egg", "has_sig": true, "md5_digest": "b473ed8a70988c9efacc5abfe7693075", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 33349, "upload_time": "2014-02-09T10:04:55", "url": "https://files.pythonhosted.org/packages/ca/89/17750804ef0146ab75d73fd5811134bde3b0b74865dbe0ca6ef0e2a828fd/pyAniSort-1.0-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "a00819cbdefe0147290adc87f5979433", "sha256": "c0200db2ee81217b47f757ca3b36488687f750b31b3fbdfb9cbd4ba321fa2808" }, "downloads": -1, "filename": "pyAniSort-1.0.win32-py3.3.exe", "has_sig": true, "md5_digest": "a00819cbdefe0147290adc87f5979433", "packagetype": "bdist_wininst", "python_version": "3.3", "requires_python": null, "size": 252974, "upload_time": "2014-02-09T10:05:10", "url": "https://files.pythonhosted.org/packages/cf/e9/51a6a7560a9a1468a0d98ca7bf776724e99eaf0e8ebda462c9521d119cc6/pyAniSort-1.0.win32-py3.3.exe" }, { "comment_text": "", "digests": { "md5": "5cdf28f9a93bdf3e9bbb1db273cca54c", "sha256": "129bc3b4eb5dd417c6c5bd898f1af9d7eaa74fd0aceb7b3110f05f1bdf684806" }, "downloads": -1, "filename": "pyAniSort-1.0.zip", "has_sig": true, "md5_digest": "5cdf28f9a93bdf3e9bbb1db273cca54c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29030, "upload_time": "2014-02-09T10:05:17", "url": "https://files.pythonhosted.org/packages/0e/9c/1afdabb3d288ab48e025202bff8dea2873a5f940de6865d491456982f021/pyAniSort-1.0.zip" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "be3915f4a1f0e2de881db94f9d954a48", "sha256": "183c2cb4da6ffbd2daf68232bc8072c973b84deb230550d1f09b1591e9bd3319" }, "downloads": -1, "filename": "pyAniSort-1.0.2-py3.3.egg", "has_sig": true, "md5_digest": "be3915f4a1f0e2de881db94f9d954a48", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 34994, "upload_time": "2014-02-13T04:19:38", "url": "https://files.pythonhosted.org/packages/43/34/ae9c384deab25e0c49e587998226aa33bf8e7e8d06c7fb0eebe6ee37a436/pyAniSort-1.0.2-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "662be38bf89512fdf2533d7d02f6b436", "sha256": "fbb069d2eb5e9f06d57898d12da28b28e91b116c71866e3260c05bf1c427ec33" }, "downloads": -1, "filename": "pyAniSort-1.0.2.win32-py3.3.exe", "has_sig": true, "md5_digest": "662be38bf89512fdf2533d7d02f6b436", "packagetype": "bdist_wininst", "python_version": "3.3", "requires_python": null, "size": 256798, "upload_time": "2014-02-13T04:19:44", "url": "https://files.pythonhosted.org/packages/df/ac/f5579bdb8a756bd98ed2c59074252599535f246701278b5e83ecad8e290f/pyAniSort-1.0.2.win32-py3.3.exe" }, { "comment_text": "", "digests": { "md5": "4646f760565b1e56495229ab59b01ce9", "sha256": "8d5019077e392c4ba68d89c6a8ed712b922e3a2cc4d6f896f565deb85de5254c" }, "downloads": -1, "filename": "pyAniSort-1.0.2.zip", "has_sig": true, "md5_digest": "4646f760565b1e56495229ab59b01ce9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30741, "upload_time": "2014-02-13T04:19:48", "url": "https://files.pythonhosted.org/packages/d0/1b/6156e35f4f00ebf2a0143b9ff2afc32b0ae0c896568748a25094c4f65b14/pyAniSort-1.0.2.zip" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "54c215667d70410165d82200bfdf9074", "sha256": "0b7dee5325113c7e8f04a3202d643d1749ad73eccf93b7fad68930d70b3cf647" }, "downloads": -1, "filename": "pyAniSort-1.0.3-py3.3.egg", "has_sig": true, "md5_digest": "54c215667d70410165d82200bfdf9074", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 37923, "upload_time": "2014-02-23T07:41:32", "url": "https://files.pythonhosted.org/packages/04/ff/932521d51a425e8dd461e71aec922cad78024bb4407c12f44c88a6280a12/pyAniSort-1.0.3-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "bf8df4b2a261b35ba11129ad88216056", "sha256": "19cb8237ba78e8346497be79e5e69f8b53847e66aff4e06fc37ad18aee762960" }, "downloads": -1, "filename": "pyAniSort-1.0.3.win32-py3.3.exe", "has_sig": true, "md5_digest": "bf8df4b2a261b35ba11129ad88216056", "packagetype": "bdist_wininst", "python_version": "3.3", "requires_python": null, "size": 259544, "upload_time": "2014-02-23T07:41:40", "url": "https://files.pythonhosted.org/packages/12/c8/4fee2a5e4e061dfb450ff2d138abf2542f87188d5fbaada2e86df67b1135/pyAniSort-1.0.3.win32-py3.3.exe" }, { "comment_text": "", "digests": { "md5": "3d44f1e7fb00828ee4487169f0a38d34", "sha256": "744ff0aba6464c1aa2517a8b981b880642c525303098c040da31ab4540306644" }, "downloads": -1, "filename": "pyAniSort-1.0.3.zip", "has_sig": true, "md5_digest": "3d44f1e7fb00828ee4487169f0a38d34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33210, "upload_time": "2014-02-23T07:41:43", "url": "https://files.pythonhosted.org/packages/b8/10/0ff4b8501af69385b0935ff090cef9efad962299ae2893fc253b6b1d025f/pyAniSort-1.0.3.zip" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "16e3d0af8fb6d5f1e985225754eca754", "sha256": "19bb163061bc8b0b368a8b574f91364897adc327aca31175d7d8ab883febaa18" }, "downloads": -1, "filename": "pyAniSort-1.0.4.tar.gz", "has_sig": false, "md5_digest": "16e3d0af8fb6d5f1e985225754eca754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23273, "upload_time": "2015-05-28T14:26:46", "url": "https://files.pythonhosted.org/packages/d3/29/4c47ca13034a617ac81b6ca086e0ebd83911e46351dbcee23bec262a3b9f/pyAniSort-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "16e3d0af8fb6d5f1e985225754eca754", "sha256": "19bb163061bc8b0b368a8b574f91364897adc327aca31175d7d8ab883febaa18" }, "downloads": -1, "filename": "pyAniSort-1.0.4.tar.gz", "has_sig": false, "md5_digest": "16e3d0af8fb6d5f1e985225754eca754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23273, "upload_time": "2015-05-28T14:26:46", "url": "https://files.pythonhosted.org/packages/d3/29/4c47ca13034a617ac81b6ca086e0ebd83911e46351dbcee23bec262a3b9f/pyAniSort-1.0.4.tar.gz" } ] }