Skip to main content

Download all or a particular XKCD comic uploaded till date from the Command line

Project description

PyPI version License

Author:

Tasdik Rahman

xkcd-dl is inspired by an awesome package called youtube-dl https://github.com/rg3/youtube-dl/ written by Daniel Bolton(Much respect!)

How about you get to download all of the xkcd which have been uploaded till date? This does just that!

Now 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!

And hence xkcd-dl

1 Features

  • Can download all the xkcd’s uploaded till date(1603 as I am writing this!).

  • Download individual xkcd’s and store them

  • Download the latest issue xkcd

  • No duplicacy in your XKCD database.

  • Stores each xkcd in a separate file named as the title of the xkcd at your home directory

  • Writes a description.txt for each xkcd. Storing meta-data like

    • date-publised

    • url value

    • a small description of that xkcd

  • written in uncomplicated python.

2 Usage

When running for the first time, do a xkcd-dl --update-db

$ xkcd-dl --update-db
XKCD link database updated
Stored it in 'xkcd_dict.json'. You can start downloading your XKCD's!
Run 'xkcd-dl --help' for more options
$

2.1 --download-latest

This downloads the last uploaded xkcd comic and stores under the home directory of the user with a brief description

$ xkcd-dl --download-latest
Downloading xkcd from 'http://imgs.xkcd.com/comics/flashlights.png' and storing it under '/home/tasdik/xkcd_archive/1603'
$

If it has been downloaded, will not do anything

2.2 --download=XKCDNUMBER

Downloads the particular XKCDNUMBER(given that it exists and has not been downloaded already) and stores it in the home directory

$ xkcd-dl --download=143
Downloading xkcd from 'http://xkcd.com/143/' and storing it under '/home/tasdik/xkcd_archive/143'
$ xkcd-dl --download=1603
Downloading xkcd from 'http://xkcd.com/1603/' and storing it under '/home/tasdik/xkcd_archive/1603'
xkcd  number '1603' has already been downloaded!
$

2.3 --download-all

As the name suggests, will download all the xkcd’s uploaded till date and store them under the home directory of the user.

$ xkcd-dl --download-all
Downloading all xkcd's Till date!!
Downloading xkcd from 'http://xkcd.com/1466' and storing it under '/home/tasdik/xkcd_archive/1466'
Downloading xkcd from 'http://xkcd.com/381' and storing it under '/home/tasdik/xkcd_archive/381'
Downloading xkcd from 'http://xkcd.com/198' and storing it under '/home/tasdik/xkcd_archive/198'
Downloading xkcd from 'http://xkcd.com/512' and storing it under '/home/tasdik/xkcd_archive/512'
Downloading xkcd from 'http://xkcd.com/842' and storing it under '/home/tasdik/xkcd_archive/842'
Downloading xkcd from 'http://xkcd.com/920' and storing it under '/home/tasdik/xkcd_archive/920'
....
....

3 Demo

Usage

Usage

Each Comic is stored in it’s own individual folder with a description.txt placed in it. It contains meta-data like - img-link - title - date-published

Here’s a little example for the same

xkcd\_archive Structure

xkcd_archive Structure

4 Installation

4.1 Option 1: installing through pip (Suggested way)

pypi package link

$ pip3 install xkcd-dl

If you are behind a proxy

$ pip3 --proxy [username:password@]domain_name:port install xkcd-dl

Note: If you get command not found then $ sudo apt-get install python3-pip should fix that

4.2 Option 2: installing from source

$ git clone https://github.com/prodicus/xkcd-dl.git
$ cd xkcd-dl/
$ pip3 install -r requirements.txt
$ python3 setup.py install

4.3 Uninstalling

$ pip3 uninstall xkcd-dl

4.4 For Arch distributions

Here is the AUR link for you

5 Help menu:

$ xkcd-dl --help
Run `xkcd-dl --update-db` if running for the first time.

Usage:
  xkcd-dl --update-db
  xkcd-dl --download-latest
  xkcd-dl --download=XKCDNUMBER
  xkcd-dl --download-all
  xkcd-dl --version
  xkcd-dl (-h | --help)
Options:
  --update-db   Updates dictionary which stores all xkcd"s till date
  -h --help     Show this screen
  -v --version  Show version
$

6 Contributing

I hacked this up in one night, so its a little messy up there. Feel free to contribute.

  1. Fork it.

  2. Create your feature branch (git checkout -b my-new-awesome-feature)

  3. Commit your changes (git commit -am 'Added <xyz> feature')

  4. Push to the branch (git push origin my-new-awesome-feature)

  5. Create new Pull Request

6.1 Contributors

Big shout out to

  • 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.

  • Braden Best for pointing out the issues when installing from source apart from his valuable input.

6.2 To-do

  • [x] add xkcd-dl --download-latest

  • [x] add xkcd-dl --download=XKCDNUMBER

  • [x] add xkcd-dl --download-all

  • [ ] add xkcd-dl --start=XKCDNUMBER --end=XKCDNUMBER [--path=/path/to/directory]

  • [ ] Remove redundant code in download_xkcd_number(), download_latest() and download_all() (Refactoring!!)

  • [ ] Adding support to open a particular xkcd at the CLI itself. (Thinking of using img2txt for that)

7 Known Issues

  • There have been issues when installed from source if you are using python 2.* as discussed in #5. So using python3.* is suggested.

  • If you get command not found when installing, it may mean that you don’t have pip3 installed. $ sudo apt-get install python3-pip should fix that. To check your version of pip

$ pip3 --version
pip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)
$

8 Bugs

Please report the bugs at the issue tracker

OR

You can tweet me at @tasdikrahman if you can’t get it to work. In fact, you should tweet me anyway.

9 License :

Built with ♥ by Tasdik Rahman (@tasdikrahman) and others released under MIT License

You can find a copy of the License at http://prodicus.mit-license.org/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xkcd-dl-0.0.6.tar.gz (8.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page