Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
This repository was archived by the owner on Nov 1, 2022. It is now read-only.
/xkcd-dlPublic archive

⏬ Download ALL xkcd's which have been uploaded till date. Ever!

License

NotificationsYou must be signed in to change notification settings

tasdikrahman/xkcd-dl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

PyPI versionLicenseTravis

Download each and everyxkcd comic uploaded! Like ever!

Author:Tasdik Rahman

1   Features

  • Can download all the xkcd's uploaded till date(1603 as I am writingthis!).
  • Download individual xkcd's and store them
  • Download ranges of xkcd's and store them
  • Download the latest issue xkcd
  • Download the meta text inside each xkcd and store it
  • No duplicacy in your XKCD database.
  • Stores each xkcd in a separate file named as thetitle of thexkcd at your home directory
  • Writes adescription.txt for each xkcd. Storing meta-data like
    • date-publised
    • url value
    • a small description of that xkcd
    • The alt text on the comic
  • written in uncomplicatedpython.

2   Demo

Usage

Usage

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

Here's a little example for the same

xkcd\_archive Structure

xkcd_archive Structure

3   Usage

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

$ xkcd-dl --update-dbXKCD link database updatedStored itin'xkcd_dict.json'. You can start downloading your XKCD's!Run'xkcd-dl --help' for more options$

3.1   --help

$ xkcd-dl --helpusage: xkcd-dl [-h] [-u] [-l] [-d XKCD_NUM|-a]               [-r [DOWNLOAD_RANGE [DOWNLOAD_RANGE ...]]] [-v] [-P PATH]               [-s XKCD_NUM]Run`xkcd-dl --update-db`if runningfor the first time.optional arguments:  -h, --help            show thishelp message andexit  -u, --update-db       Update the database  -l, --download-latest                        Download most recent comic  -d XKCD_NUM, --download XKCD_NUM                        Download specified comic by number  -a, --download-all    Download all comics  -r [DOWNLOAD_RANGE [DOWNLOAD_RANGE ...]], --download-range [DOWNLOAD_RANGE [DOWNLOAD_RANGE ...]]                        Download specified range  -v, --version         show program's version number and exit  -P PATH, --path PATH  set path  -s XKCD_NUM, --show XKCD_NUM                        Show specified comic by number

3.2   --download-latest

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

$ xkcd-dl --download-latestDownloading 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

This command will work even if you have not run --update-db yet.

3.3   --download=XKCDNUMBER

Downloads the particularXKCDNUMBER(given that it exists and hasnot been downloaded already) and stores it in the home directory

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

3.4   --download-range <START> <END>

Will take two number parameters and download all the xkcd's betweenthe two, inclusive.

$ xkcd-dl --download-range 32 36Downloading xkcd from'http://xkcd.com/32/' and storing it under'/home/tasdik/xkcd_archive/32'Downloading xkcd from'http://xkcd.com/33/' and storing it under'/home/tasdik/xkcd_archive/33'Downloading xkcd from'http://xkcd.com/34/' and storing it under'/home/tasdik/xkcd_archive/34'Downloading xkcd from'http://xkcd.com/35/' and storing it under'/home/tasdik/xkcd_archive/35'Downloading xkcd from'http://xkcd.com/36/' and storing it under'/home/tasdik/xkcd_archive/36'

3.5   --download-all

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

$ xkcd-dl --download-allDownloading 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.6   --path=PATH

To use a custom directory to store your xkcd_archive, you can append--path=./any/path/here to the end of any download method. Absolute and relativepaths work, but the directory must already exist.

$ xkcd-dl --download=3 --path=comicDownloading xkcd from'http://xkcd.com/3/' and storing it under'/home/tasdik/comic/xkcd_archive/3'$ xkcd-dl --download-range 54 56 --path=/home/tasdik/xkcdDownloading xkcd from'http://xkcd.com/54/' and storing it under'/home/tasdik/xkcd/xkcd_archive/54'Downloading xkcd from'http://xkcd.com/55/' and storing it under'/home/tasdik/xkcd/xkcd_archive/55'Downloading xkcd from'http://xkcd.com/56/' and storing it under'/home/tasdik/xkcd/xkcd_archive/56'

3.7   --show XKCD_NUM

Opens the specified comic. Downloads it, if not downloaded already. Prints the alt text and metadata to stdout.

$ xkcd-dl --show 32Downloading xkcd from'http://xkcd.com/32/' and storing it under'/home/bk/Documents/xkcd-dl/xkcd_dl/xkcd_archive/32'title: Pillardate-publised: 2006-1-1url: http://xkcd.com/32/alt: A comic by my brother Doug, redrawn and rewritten by me$ xkcd-dl -s 1000Downloading xkcd from'http://xkcd.com/1000/' and storing it under'/home/bk/Documents/xkcd-dl/xkcd_dl/xkcd_archive/1000'xkcd  number'1000' has already been downloaded!title: 1000 Comicsdate-publised: 2012-1-6url: http://xkcd.com/1000/alt: Thank youfor making me feel less alone.

4   Installation

4.1   Option 1: installing throughpip (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 getcommand not found then$ sudo apt-get install python3-pip should fix that

4.2   Option 2: installing from source

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

4.3   Upgrading

$ pip3 install -U xkcd-dl

4.4   Uninstalling

$ pip3 uninstall xkcd-dl

4.5   ForArch distributions

Here is theAUR link for you

5   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

5.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 andBlitzKraft for pointing it out.
  • BlitzKraft for adding the feature to download the alt-text from the the xkcdand major clean ups!
  • Braden Best for pointing out the issues when installing from source apart from his valuable input.

5.2   To-do

  • [x] addxkcd-dl --download-latest
  • [x] addxkcd-dl --download=XKCDNUMBER
  • [x] addxkcd-dl --download-all
  • [x] addxkcd-dl download-range <START> <END>
  • [x] add path setting with[--path=/path/to/directory] option
  • [x] add exclude list to easily recognize and ignore dynamic comicsi.e. comics without a default image.
  • [x] Remove redundant code indownload_xkcd_number(),download_latest() anddownload_all() (Refactoring!!)
  • [x] Adding support to open a particular xkcd at the CLI itself.Implemented using xdg-open. Opens using your default image viewer.
  • [x] Add tests

5.3   Known Issues

  • There have been issues when installed from source if you are usingpython 2.* as discussed in#5.So usingpython3.* is suggested.
  • If you getcommand not found when installing, it may mean thatyou don't havepip3 installed.$ sudo apt-get install python3-pip should fix that. To check yourversion of pip
  • Dynamic comics have to be added manually using the excludeList
$ pip3 --versionpip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)$

5.4   Bugs

Please report the bugs at theissuetracker

OR

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

6   Changelog

  • 0.1.2:
    bug: fixed relative import error in setup.pyadded support for gif files when renaming downloaded image (#38)

7   Motivation

xkcd-dl is inspired by an awesome package calledyoutube-dl written byDaniel Bolton (Much respect!)

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

Now I don't know about you, but I just love readingxkcd's! Had a boring Sunday night looming over, thought why not create something likeyoutube-dl but for downloadingxkcd's!

And hencexkcd-dl

Cheers to a crazy night!

8   Legal stuff

Built with ♥ byTasdik Rahman(@tasdikrahman) andothers released underMIT License

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

9   Donation

If you have found my little bits of software of any use to you, you can help me pay my internet bills :)

Paypal badge

Instamojo

gratipay

patreon

About

⏬ Download ALL xkcd's which have been uploaded till date. Ever!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp