Home

Awesome

<h1 align="center">downloader-cli</h1> <h3 align="center">A simple downloader written in Python with an awesome progressbar.</h3> <div align="center" style="padding-top: 2em !important; padding-bottom: 2em; !important"> <img src=".github/dw.gif"> </div> <div align="center"> <br/>

<a href="#installation">Installation</a>   |   <a href="#requirements">Requirements</a>   |   <a href="#usage">Usage</a>   |   <a href="#use-it">Use It</a>   |   <a href="#other-examples">Other examples</a>    <br/><br/>

forthebadge made-with-python<br/><br/> License Downloads PyPI AUR PRs Welcome

</div>

Installation

NOTE: The following packages (except installing manually) will get you the latest release. If you want to try out the latest development stuff, install manually.

PyPI

The package is available in PyPI here

Install it using

pip install downloader-cli

Arch

The package is available in the AUR here

Install it using yay

yay -S downloader-cli

Gentoo

The package is also available in src_prepare Gentoo overlay here

First set up src_prepare-overlay

sudo emerge -anv --noreplace app-eselect/eselect-repository
sudo eselect repository enable src_prepare-overlay
sudo emaint sync -r src_prepare-overlay

Install it using

sudo emerge -anv --autounmask net-misc/downloader-cli

Conda-Forge

Installing downloader-cli from the conda-forge channel can be achieved by adding conda-forge to your channels with:

conda config --add channels conda-forge
conda config --set channel_priority strict

Once the conda-forge channel has been enabled, downloader-cli can be installed with:

conda install downloader-cli

It is possible to list all of the versions of downloader-cli available on your platform with:

conda search downloader-cli --channel conda-forge

Manual

If you want to manuall install, clone the repo and run the following command

sudo python setup.py install

Requirements

downloader-cli requires just one external module.

Usage

The script also allows some other values from the commandline.

usage: dw [-h] [-f | -c] [-e] [-q] [-b] [-v] [--done DONE] [--left LEFT]
          [--current CURRENT] [--color-done COLOR_DONE]
          [--color-left COLOR_LEFT] [--color-current COLOR_CURRENT]
          [--icon-border ICON_BORDER]
          SOURCE [TARGET]

positional arguments:
  SOURCE                URL of the file
  TARGET                target filepath (existing directories will be treated
                        as the target location)

optional arguments:
  -h, --help            show this help message and exit
  -f, -o, --force       overwrite if the file already exists
  -c, --resume          resume failed or cancelled download (partial sanity
                        check)
  -e, --echo            print the filepath to stdout after downloading (other
                        output will be redirected to stderr)
  -q, --quiet           suppress filesize and progress info
  -b, --batch           Download files in batch. If this flag is passed the
                        passed source will be considered as a file with
                        download links seperated by a newline. This flag will
                        be ignored if source is a valid URL.
  -v, --version         show the program version number and exit

UI Group:
  --done DONE           Icon indicating the percentage done of the downloader
  --left LEFT           Icon indicating the percentage remaining to download
  --current CURRENT     Icon indicating the current percentage in the progress
                        bar
  --color-done COLOR_DONE
                        Color for the done percentage icon
  --color-left COLOR_LEFT
                        Color for the remaining percentage icon
  --color-current COLOR_CURRENT
                        Color for the current indicator icon in the progress
                        bar
  --icon-border ICON_BORDER
                        Icon for the border of the progress bar

Use It

Want to use it in your project?

Import the Download class using the following.

from downloader_cli.download import Download
Download(url).download()

Above is the simplest way to use it in your app. The other arguments are optional.

Arguments

The module takes various arguments. Only one is required though.

Namerequireddefault
URL/fileYes
desNoNone (Current directory is selected and the name is extracted from the URL)
overwriteNoFalse
continue_downloadNoFalse
echoNoFalse
quietNoFalse
batchNoFalse
icon_doneNo
icon_leftNo
icon_currentNo
icon_borderNo| (If a single char is passed, it will be used for both the right and left border. If a string of 2 chars are passed, 1st char will be used as left border and the 2nd as the right border)
color_doneNoblue
color_leftNoblue
color_currentNoblue

NOTE For details regarding the arguments, check Usage

NOTE In case the file size is not available, the bar is shown as indefinite, in which case the icon_left by default space(" ").

Other examples

In case you want to experiment with the progress bar's icons, here's some examples.