{ "info": { "author": "Tasdik Rahman", "author_email": "prodicus@outlook.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Build Tools" ], "description": ".. figure:: https://raw.githubusercontent.com/prodicus/xkcd-dl/master/assets/logo.png\n :alt: logo\n\n\n|PyPI version| |License|\n\nDownload each and every `xkcd `__ comic uploaded! Like ever!\n\n:Author: Tasdik Rahman\n\nIf you have found my little bits of software of any use to you, you can help me pay my internet bills :)\n\n|Paypal badge| |Instamojo|\n\nSome of my projects are also on `Gratipay `__\n\n.. contents::\n :backlinks: none\n\n.. sectnum::\n\n\nFeatures\n=========\n\n- Can download all the xkcd's uploaded till date(1603 as I am writing\n this!).\n- Download individual xkcd's and store them\n- Download ranges of xkcd's and store them\n- Download the latest issue xkcd\n- Download the meta text inside each xkcd and store it\n- No duplicacy in your XKCD database.\n- Stores each xkcd in a separate file named as the ``title`` of the\n xkcd at your home directory\n- Writes a ``description.txt`` for each xkcd. Storing meta-data like\n\n - ``date-publised``\n - url value\n - a small description of that xkcd\n - The alt text on the comic\n\n- written in uncomplicated ``python``.\n\nDemo\n====\n\n.. figure:: https://raw.githubusercontent.com/prodicus/xkcd-dl/master/assets/usage.gif\n :alt: Usage\n\n Usage\n\nEach Comic is stored in it's own individual folder with a\n``description.txt`` placed in it. It contains meta-data like -\n``img-link`` - ``title`` - ``date-published`` - ``alt``\n\nHere's a little example for the same\n\n.. figure:: https://raw.githubusercontent.com/prodicus/xkcd-dl/master/assets/directory_struc.jpg\n :alt: xkcd\\_archive Structure\n\n xkcd\\_archive Structure\n\n\nUsage\n=====\n\nWhen running for the first time, do a ``xkcd-dl --update-db``\n\n.. code:: bash\n\n $ xkcd-dl --update-db\n XKCD link database updated\n Stored it in 'xkcd_dict.json'. You can start downloading your XKCD's!\n Run 'xkcd-dl --help' for more options\n $\n\n``--help``\n----------\n\n.. code:: bash\n\n $ xkcd-dl --help\n usage: xkcd-dl [-h] [-u] [-l] [-d XKCD_NUM | -a]\n [-r [DOWNLOAD_RANGE [DOWNLOAD_RANGE ...]]] [-v] [-P PATH]\n [-s XKCD_NUM]\n\n Run `xkcd-dl --update-db` if running for the first time.\n\n optional arguments:\n -h, --help show this help message and exit\n -u, --update-db Update the database\n -l, --download-latest\n Download most recent comic\n -d XKCD_NUM, --download XKCD_NUM\n Download specified comic by number\n -a, --download-all Download all comics\n -r [DOWNLOAD_RANGE [DOWNLOAD_RANGE ...]], --download-range [DOWNLOAD_RANGE [DOWNLOAD_RANGE ...]]\n Download specified range\n -v, --version show program's version number and exit\n -P PATH, --path PATH set path\n -s XKCD_NUM, --show XKCD_NUM\n Show specified comic by number\n\n\n``--download-latest``\n---------------------\n\nThis downloads the last uploaded xkcd comic and stores under the home\ndirectory of the user with a brief description\n\n.. code:: bash\n\n $ xkcd-dl --download-latest\n Downloading xkcd from 'http://imgs.xkcd.com/comics/flashlights.png' and storing it under '/home/tasdik/xkcd_archive/1603'\n $\n\nIf it has been downloaded, will not do anything\n\nThis command will work even if you have not run --update-db yet.\n\n``--download=XKCDNUMBER``\n-------------------------\n\nDownloads the particular ``XKCDNUMBER``\\ (given that it exists and has\nnot been downloaded already) and stores it in the home directory\n\n.. code:: bash\n\n $ xkcd-dl --download=143\n Downloading xkcd from 'http://xkcd.com/143/' and storing it under '/home/tasdik/xkcd_archive/143'\n $ xkcd-dl --download=1603\n Downloading xkcd from 'http://xkcd.com/1603/' and storing it under '/home/tasdik/xkcd_archive/1603'\n xkcd number '1603' has already been downloaded!\n $\n\n``--download-range ``\n--------------------\n\nWill take two number parameters and download all the xkcd's between\nthe two, inclusive.\n\n.. code:: bash\n\n $ xkcd-dl --download-range 32 36\n Downloading xkcd from 'http://xkcd.com/32/' and storing it under '/home/tasdik/xkcd_archive/32'\n Downloading xkcd from 'http://xkcd.com/33/' and storing it under '/home/tasdik/xkcd_archive/33'\n Downloading xkcd from 'http://xkcd.com/34/' and storing it under '/home/tasdik/xkcd_archive/34'\n Downloading xkcd from 'http://xkcd.com/35/' and storing it under '/home/tasdik/xkcd_archive/35'\n Downloading xkcd from 'http://xkcd.com/36/' and storing it under '/home/tasdik/xkcd_archive/36'\n\n``--download-all``\n------------------\n\nAs the name suggests, will download all the xkcd's uploaded till date\nand store them under the home directory of the user.\n\n.. code:: bash\n\n $ xkcd-dl --download-all\n Downloading all xkcd's Till date!!\n Downloading xkcd from 'http://xkcd.com/1466' and storing it under '/home/tasdik/xkcd_archive/1466'\n Downloading xkcd from 'http://xkcd.com/381' and storing it under '/home/tasdik/xkcd_archive/381'\n Downloading xkcd from 'http://xkcd.com/198' and storing it under '/home/tasdik/xkcd_archive/198'\n Downloading xkcd from 'http://xkcd.com/512' and storing it under '/home/tasdik/xkcd_archive/512'\n Downloading xkcd from 'http://xkcd.com/842' and storing it under '/home/tasdik/xkcd_archive/842'\n Downloading xkcd from 'http://xkcd.com/920' and storing it under '/home/tasdik/xkcd_archive/920'\n ....\n ....\n\n``--path=PATH``\n---------------\n\nTo use a custom directory to store your xkcd_archive, you can append\n--path=./any/path/here to the end of any download method. Absolute and relative\npaths work, but the directory must already exist.\n\n.. code:: bash\n\n $ xkcd-dl --download=3 --path=comic\n Downloading xkcd from 'http://xkcd.com/3/' and storing it under '/home/tasdik/comic/xkcd_archive/3'\n $ xkcd-dl --download-range 54 56 --path=/home/tasdik/xkcd\n Downloading xkcd from 'http://xkcd.com/54/' and storing it under '/home/tasdik/xkcd/xkcd_archive/54'\n Downloading xkcd from 'http://xkcd.com/55/' and storing it under '/home/tasdik/xkcd/xkcd_archive/55'\n Downloading xkcd from 'http://xkcd.com/56/' and storing it under '/home/tasdik/xkcd/xkcd_archive/56'\n\n``--show XKCD_NUM``\n-------------------\n\nOpens the specified comic. Downloads it, if not downloaded already. Prints the alt text and metadata to stdout.\n\n.. code:: bash\n \n $ xkcd-dl --show 32\n Downloading xkcd from 'http://xkcd.com/32/' and storing it under '/home/bk/Documents/xkcd-dl/xkcd_dl/xkcd_archive/32'\n title : Pillar\n date-publised: 2006-1-1\n url: http://xkcd.com/32/\n alt: A comic by my brother Doug, redrawn and rewritten by me\n \u00a0\n $ xkcd-dl -s 1000\n Downloading xkcd from 'http://xkcd.com/1000/' and storing it under '/home/bk/Documents/xkcd-dl/xkcd_dl/xkcd_archive/1000'\n xkcd number '1000' has already been downloaded!\n title : 1000 Comics\n date-publised: 2012-1-6\n url: http://xkcd.com/1000/\n alt: Thank you for making me feel less alone.\n\n\nInstallation\n============\n\nOption 1: installing through `pip `__ (Suggested way)\n-------------------------------------------------------------------------------------------\n\n`pypi package link `__\n\n``$ pip3 install xkcd-dl``\n\nIf you are behind a proxy\n\n``$ pip3 --proxy [username:password@]domain_name:port install xkcd-dl``\n\n**Note:** If you get ``command not found`` then\n``$ sudo apt-get install python3-pip`` should fix that\n\nOption 2: installing from source\n--------------------------------\n\n.. code:: bash\n\n $ git clone https://github.com/prodicus/xkcd-dl.git\n $ cd xkcd-dl/\n $ pip3 install -r requirements.txt\n $ python3 setup.py install\n\nUpgrading\n---------\n\n.. code:: bash\n\n $ pip3 install -U xkcd-dl\n\nUninstalling\n------------\n\n``$ pip3 uninstall xkcd-dl``\n\nFor ``Arch`` distributions\n--------------------------\n\nHere is the ``AUR`` link for you\n\n- `Arch package `__\n\nContributing\n============\n\n**I hacked this up in one night, so its a little messy up there.** Feel free to contribute.\n\n1. Fork it.\n2. Create your feature branch\n (``git checkout -b my-new-awesome-feature``)\n3. Commit your changes (``git commit -am 'Added feature'``)\n4. Push to the branch (``git push origin my-new-awesome-feature``)\n5. Create new Pull Request\n\nContributors\n------------\n\nBig shout out to\n\n- `Ian C `__ for fixing issue `#2 `__ which stopped the download if a title of a comic had a special character in it and `BlitzKraft `__ for pointing it out.\n- `BlitzKraft `__ for adding the feature to download the `alt-text` from the the xkcd **and** major clean ups!\n- `Braden Best `__ for pointing out the issues when installing from source apart from his valuable input.\n\nTo-do\n-----\n\n- [x] add ``xkcd-dl --download-latest``\n- [x] add ``xkcd-dl --download=XKCDNUMBER``\n- [x] add ``xkcd-dl --download-all``\n- [x] add ``xkcd-dl download-range ``\n- [x] add path setting with ``[--path=/path/to/directory]`` option\n- [x] add exclude list to easily recognize and ignore dynamic comics\n i.e. comics without a default image.\n- [x] Remove redundant code in ``download_xkcd_number()``,\n ``download_latest()`` and ``download_all()`` (**Refactoring!!**)\n- [x] Adding support to open a particular xkcd at the CLI itself.\n Implemented using `xdg-open`. Opens using your default image viewer.\n\n\nKnown Issues\n------------\n\n- There have been issues when installed from source if you are using\n ``python 2.*`` as discussed in\n `#5 `__.\n So using ``python3.*`` is suggested.\n- If you get ``command not found`` when installing, it may mean that\n you don't have ``pip3`` installed.\n ``$ sudo apt-get install python3-pip`` should fix that. To check your\n version of pip\n- Dynamic comics have to be added manually using the excludeList\n\n.. code:: bash\n\n $ pip3 --version\n pip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)\n $ \n\n\nBugs\n----\n\nPlease report the bugs at the `issue\ntracker `__\n\n**OR**\n\nYou can tweet me at `@tasdikrahman `__ if you can't get it to work. In fact, you should tweet me anyway.\n\nChangelog\n=========\n\n- ``0.1.2``:\n \tbug: fixed relative import error in setup.py\n\tadded support for gif files when renaming downloaded image (#38)\n\nMotivation\n==========\n\n``xkcd-dl`` is inspired by an awesome package called `youtube-dl `__ written by `Daniel Bolton `__ (Much respect!)\n\nHow about you get to download all of the xkcd which have been uploaded\ntill date? This does just that!\n\nNow I don't know about you, but I just love reading ``xkcd``'s! Had a boring Sunday night looming over, thought why not create something like ``youtube-dl`` but for downloading ``xkcd``'s!\n\nAnd hence `xkcd-dl `__\n\nCheers to a crazy night!\n\nLegal stuff\n===========\n\nBuilt with \u2665 by `Tasdik Rahman `__ `(@tasdikrahman) `__ and `others `__ released under `MIT License `__\n\nYou can find a copy of the License at http://prodicus.mit-license.org/\n\n\n.. |PyPI version| image:: https://badge.fury.io/py/xkcd-dl.svg\n :target: https://badge.fury.io/py/xkcd-dl\n.. |License| image:: https://img.shields.io/pypi/l/xkcd-dl.svg\n :target: https://img.shields.io/pypi/l/xkcd-dl.svg\n.. |Paypal badge| image:: https://tuxtricks.files.wordpress.com/2016/12/donate.png\n :target: https://www.paypal.me/tasdikrahman\n.. |Instamojo| image:: https://www.instamojo.com/blog/wp-content/uploads/2017/01/instamojo-91.png\n :target: https://www.instamojo.com/@tasdikrahman", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/prodicus/xkcd-dl/tarball/0.1.2", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/prodicus/xkcd-dl", "keywords": "xkcd,cli,commandline,download,api,comic", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "xkcd-dl", "package_url": "https://pypi.org/project/xkcd-dl/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/xkcd-dl/", "project_urls": { "Download": "https://github.com/prodicus/xkcd-dl/tarball/0.1.2", "Homepage": "https://github.com/prodicus/xkcd-dl" }, "release_url": "https://pypi.org/project/xkcd-dl/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Download all the XKCD's uploaded, ever from the command line", "version": "0.1.2" }, "last_serial": 2906324, "releases": { "0.0.3": [], "0.0.4": [ { "comment_text": "", "digests": { "md5": "fa7eb6556eddedb47205dc4cc3c21170", "sha256": "661432c46f8179ed150d5529d5d9271f6bc67e2641f3e4ee0f1ce1391a2b26c2" }, "downloads": -1, "filename": "xkcd-dl-0.0.4.tar.gz", "has_sig": false, "md5_digest": "fa7eb6556eddedb47205dc4cc3c21170", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6017, "upload_time": "2015-11-14T10:28:42", "url": "https://files.pythonhosted.org/packages/49/4e/e3828a46a360335103d371287a42708ea51b7d286ec2132a2da3a95bca64/xkcd-dl-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "762d45dd44b87f8a5a8faf0a3a7ca997", "sha256": "e1a46b4b79e3582bfa1eb334d8829aa0ee450dd09542219b45143158fdef94ed" }, "downloads": -1, "filename": "xkcd-dl-0.0.5.tar.gz", "has_sig": false, "md5_digest": "762d45dd44b87f8a5a8faf0a3a7ca997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7069, "upload_time": "2015-11-14T11:20:41", "url": "https://files.pythonhosted.org/packages/66/88/b9de4eabc53cd4eee6bd37fb5e7a192d9f8917407ed1bd09433936ffdb8f/xkcd-dl-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "0aab68a5c0b09eb3f781897d0ccc19a8", "sha256": "0b3778456290fc73bf19424f34977bb3afc78c694149d881281777fad7fe0b2c" }, "downloads": -1, "filename": "xkcd-dl-0.0.6.tar.gz", "has_sig": false, "md5_digest": "0aab68a5c0b09eb3f781897d0ccc19a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8464, "upload_time": "2016-02-16T14:42:21", "url": "https://files.pythonhosted.org/packages/6e/ce/521a4a09e18a35bb48d7864d3fe51c5d2e1f67210c92dd757bd613eb9470/xkcd-dl-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "a4e7617c8dfd95269f95f18321534a2d", "sha256": "ec7e78a20af12ed6fdce8e04e10e15d2bed018dce7f0670dd251d47e1ea6f3d4" }, "downloads": -1, "filename": "xkcd-dl-0.0.7.tar.gz", "has_sig": false, "md5_digest": "a4e7617c8dfd95269f95f18321534a2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10335, "upload_time": "2016-04-08T10:04:49", "url": "https://files.pythonhosted.org/packages/4c/19/fd0aa1f3bfa2ea98649355025d88431ab5c4301e12cd949d8bfdfe59be74/xkcd-dl-0.0.7.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b5e9bcd5d3b0a3cea106945eb5a619b8", "sha256": "b040cf0295436a05acacb0067a3130bc23782a271f9051329a1d81fa17fc8edb" }, "downloads": -1, "filename": "xkcd-dl-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b5e9bcd5d3b0a3cea106945eb5a619b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11703, "upload_time": "2016-04-19T07:04:50", "url": "https://files.pythonhosted.org/packages/fa/f4/810bb162ec2016601d24299a9e6295fe47493b4fda83887f583d33634e6f/xkcd-dl-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4379b2b609ab316349f5e8cbee7c7257", "sha256": "5ecf2b8c0409fb697e5dee58bf250ea1da69e83e2ddda9c7917353cc34277919" }, "downloads": -1, "filename": "xkcd-dl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4379b2b609ab316349f5e8cbee7c7257", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11840, "upload_time": "2016-04-19T08:29:39", "url": "https://files.pythonhosted.org/packages/01/bb/c460008e7fc92f54d187ac73bdd067ea40315c1b11068ceb8d9e63a19880/xkcd-dl-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1f0f259b27adaa9b3915e17e5406996e", "sha256": "7b06e1fe359729729422753d22e85fcbb47cdc98bf72fa08ce4e3d8ac3e51fec" }, "downloads": -1, "filename": "xkcd-dl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1f0f259b27adaa9b3915e17e5406996e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13423, "upload_time": "2017-05-29T11:55:22", "url": "https://files.pythonhosted.org/packages/a7/b9/c41d32223b5013c1446a5fcce50aea3a89e338f3c01ea63e57d0e1810232/xkcd-dl-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1f0f259b27adaa9b3915e17e5406996e", "sha256": "7b06e1fe359729729422753d22e85fcbb47cdc98bf72fa08ce4e3d8ac3e51fec" }, "downloads": -1, "filename": "xkcd-dl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1f0f259b27adaa9b3915e17e5406996e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13423, "upload_time": "2017-05-29T11:55:22", "url": "https://files.pythonhosted.org/packages/a7/b9/c41d32223b5013c1446a5fcce50aea3a89e338f3c01ea63e57d0e1810232/xkcd-dl-0.1.2.tar.gz" } ] }