Download all or a particular XKCD comic uploaded till date from the Command line
Project description
- 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
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
4 Installation
4.1 Option 1: installing through pip (Suggested way)
$ 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
6 Contributing
I hacked this up in one night, so its a little messy up there. Feel free to contribute.
Fork it.
Create your feature branch (git checkout -b my-new-awesome-feature)
Commit your changes (git commit -am 'Added <xyz> feature')
Push to the branch (git push origin my-new-awesome-feature)
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.