{ "info": { "author": "Willem Hunt", "author_email": "whunt1@uvm.edu", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Snag \nA program to automatically fetch free software from the web. Any software with an unauthenticated download link can be downloaded fully automatically, while other software's download pages will be opened for manual download.\n\nWhile this is primarily intended to assist in regular updates of downloaded software, any file type can be downloaded with this tool.\n\n## Installation\n```\nsudo pip install snag\n```\n\n## Usage\nTo download the programs, navigate to the folder in which you would like the programs to be placed and run the following command:\n\n```\nsnag [config | -e/--example] [options]\n```\n### Options\n```\nconfig\t\t\t- Specifies where to look for config file. Required (Mutually exclusive with -e)\n-e, --example\t\t- enables use of the built-in example download list (Mutually exclusive with config)\n-o, --out\t\t- Specifies output directory for downloaded files (default: ./)\n-q, --quiet\t \t- disables printing to the terminal. Incompatible with -v.\n-v, --verbose\t \t- enables verbose status messages. Incompatible with -q.\n-l, --log\t \t- enables logging to specified log file (default: ./log)\n-c, --chars\t\t- Specifies maximum number of characters to be printed per logging action. Set to 0 for unlimited printing. (default: 0)\n```\n\nExample:\n```\nsnag -vl ./TTConfig.csv\n```\n(Enables verbose mode and logging, and uses ./TTConfig.csv as the config file)\n\n## Configuration\nThe config file must be formatted as a csv with the following fields:\n```\nProgram Name, Download Page URL, Link Locator, File Type Extension, Category\n```\nEach line should specify the download information for one program. Lines starting with a '#' will be ignored.\n\nExample:\n```\nAdium,https://adium.im/.downloadInfo:a:*href,dmg,mac\n```\nThis downloads the file \"Adium.dmg\" from the url by getting the href attribute of a link that is the child of an element with the class \"downloadInfo\", and saves it to the folder \"mac\"\n### Link Locators\nThe link locator is a string that the program uses to find the download link of a program on a page.\n\nA valid link locator is composed of a series of \"nodes\" delimited by colons (:).\n\nExample:\n```\n #osversion:^:a:*href\n```\nThis finds the element with the ID \"osversion\", moves to its parent element, finds its first child of type a, and gets the href attribute of the element.\n\nThe type of a node is determined by its first character. The available node type prefixes are listed below:\n```\n. (period) \t- Class attribute\n# (pound sign) - ID attribute\n^ (caret)\t- Move to parent element\n@ (at sign)\t- Get title\n* (asterisk)\t- Get specified attribute\nNo prefix\t- Get element type\n```\n\n\n\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/willemhuntuvm/snag", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "snag", "package_url": "https://pypi.org/project/snag/", "platform": "", "project_url": "https://pypi.org/project/snag/", "project_urls": { "Homepage": "https://github.com/willemhuntuvm/snag" }, "release_url": "https://pypi.org/project/snag/1.0.0/", "requires_dist": [ "beautifulsoup4", "requests" ], "requires_python": "", "summary": "A tool to batch-download files from the internet", "version": "1.0.0" }, "last_serial": 5547178, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "727b5bc5a1c8a7cff35cd598bc308fae", "sha256": "1076998dd22ab33f6832b8ddf784eb93c499afbfbe4f18099a9a0af95b81fca7" }, "downloads": -1, "filename": "snag-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "727b5bc5a1c8a7cff35cd598bc308fae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7571, "upload_time": "2019-07-17T17:27:51", "url": "https://files.pythonhosted.org/packages/78/a2/646c1e02d7c5d54f3dc0243e80bd161d1f04d216f713053fbdf2a8817698/snag-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d2e9b7dabf11ca6509572556b674385", "sha256": "f0603169dbbf712588ce4ff4a6850e1bf9e1f67ac0c752dd4b2472a3ebe32c0d" }, "downloads": -1, "filename": "snag-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2d2e9b7dabf11ca6509572556b674385", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6511, "upload_time": "2019-07-17T17:27:53", "url": "https://files.pythonhosted.org/packages/04/0f/347d0d1e801151656b336e79596a5bd8b35931528480ad5b4c8febe90b40/snag-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "7d4ae0a3f9de2db1afe1ca3e7d50f64c", "sha256": "6dfab1657c091a1e1fd4f3882d48c2c8358239217859d7ca5624a2b0792df9b3" }, "downloads": -1, "filename": "snag-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7d4ae0a3f9de2db1afe1ca3e7d50f64c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7608, "upload_time": "2019-07-17T18:35:10", "url": "https://files.pythonhosted.org/packages/42/00/e289d1464a138601f04fdaae982926191adce0f0bdd4945ec05f7307ba99/snag-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "603e8e9ca08829c48cbdffbf4da1dd6a", "sha256": "bd15b8f098e8906571e1b973375ef8da7f9dbf05a14e0ed61a92570e990098cc" }, "downloads": -1, "filename": "snag-1.0.0.tar.gz", "has_sig": false, "md5_digest": "603e8e9ca08829c48cbdffbf4da1dd6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6550, "upload_time": "2019-07-17T18:35:11", "url": "https://files.pythonhosted.org/packages/f3/ac/dffb3fc95b708bd081c4b60ef6579596e2fa8f16ebc61c7ab5e5d3d869d4/snag-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d4ae0a3f9de2db1afe1ca3e7d50f64c", "sha256": "6dfab1657c091a1e1fd4f3882d48c2c8358239217859d7ca5624a2b0792df9b3" }, "downloads": -1, "filename": "snag-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7d4ae0a3f9de2db1afe1ca3e7d50f64c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7608, "upload_time": "2019-07-17T18:35:10", "url": "https://files.pythonhosted.org/packages/42/00/e289d1464a138601f04fdaae982926191adce0f0bdd4945ec05f7307ba99/snag-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "603e8e9ca08829c48cbdffbf4da1dd6a", "sha256": "bd15b8f098e8906571e1b973375ef8da7f9dbf05a14e0ed61a92570e990098cc" }, "downloads": -1, "filename": "snag-1.0.0.tar.gz", "has_sig": false, "md5_digest": "603e8e9ca08829c48cbdffbf4da1dd6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6550, "upload_time": "2019-07-17T18:35:11", "url": "https://files.pythonhosted.org/packages/f3/ac/dffb3fc95b708bd081c4b60ef6579596e2fa8f16ebc61c7ab5e5d3d869d4/snag-1.0.0.tar.gz" } ] }