bdownload

A multi-threaded and multi-source aria2-like batch file downloading library for Python 2.7 and 3.6+

Installation

  • via PyPI

    $ pip install bdownload

  • from within source directory locally

    $ pip install .

    Note that you should git clone or download the source tarball (and unpack it of course) from the repository first

Notes

For Python2.7: Since the version of 2022.5.18, certifi has dropped the support for Python2.x. To upgrade to the latest CA certificates bundle after installation, simply run:

$ bdownload-upd-cacert-py2

Usage: as a Python package

Importing

from bdownload import BDownloader, BDownloaderException

or

import bdownload

Signatures

For information on the developer interfaces of bdownload, see API indices.

Examples

Usage: as a command-line script

Synopsis

bdownload      url | -L URLS [URLS ...]
               [-O OUTPUT | -o OUTPUT [OUTPUT ...]] [-D DIR]
               [-p PROXY] [-n MAX_WORKERS] [-j MAX_PARALLEL_DOWNLOADS]
               [-J WORKERS_PER_DOWNLOAD] [-k MIN_SPLIT_SIZE] [-s CHUNK_SIZE]
               [-e COOKIE] [--user-agent USER_AGENT] [--referrer REFERRER]
               [--check-certificate {True,true,TRUE,False,false,FALSE}]
               [--ca-certificate CA_CERTIFICATE]
               [--certificate CERTIFICATE] [--private-key PRIVATE_KEY]
               [-P {mill,bar,none}] [--num-pools NUM_POOLS]
               [--pool-size POOL_SIZE] [-l {debug,info,warning,error,critical}]
               [-c | --no-continue] [-H HEADER] [-u USER_PASS] [--netrc-file NETRC_FILE]
               [-h]

Description

url

URL for the file to be downloaded, which can be either a single URL or TAB-separated composite URL pointing to the same file, e.g. “https://www.afilelink.com/afile.tar.gz”, “https://chinshou.libccp.mil/luoxuan1981/panjuan-hangyi/tiqianbaozha-key-yasui/qianjunyifa/bengqiyijiao/i-manual/dashboy-basket/zhongzhenkong/xinghuo-xianghui/chunqiao-electronhive-midianfeng/zhenhudan-yasally/afile.tar.gz”, and “https://www.afilelink.com/afile.tar.gzthttps://nianpei.bpfatran.com/afile.tar.gz”

-L URLS [URLS ...], --url URLS [URLS ...]

URL(s) for the files to be downloaded, each of which might contain TAB-separated URLs pointing to the same file, e.g. -L https://yoursite.net/yourfile.7z, -L “https://yoursite01.net/thefile.7zthttps://yoursite02.com/thefile.7z”, or –url “http://foo.cc/file1.zip” “http://bar.cc/file2.tgzthttp://bar2.cc/file2.tgz”

-O OUTPUT, --OUTPUT OUTPUT

a save-as file name (optionally with absolute or relative (to -D DIR) path), e.g. -O afile.tar.gz https://www.afilelink.com/afile.tar.gz

-o OUTPUT [OUTPUT ...], --output OUTPUT [OUTPUT ...]

one or more file names (optionally prefixed with relative (to -D DIR) or absolute paths), e.g. -o file1.zip ~/file2.tgz, paired with URLs specified by --url or -L

-D DIR, --dir DIR

directory in which to save the downloaded files [default: directory in which this App is running]

-p PROXY, --proxy PROXY

proxy either in the form of “http://[user:pass@]host:port” or “socks5://[user:pass@]host:port

-n MAX_WORKERS, --max-workers MAX_WORKERS

number of worker threads [default: 20]

-j MAX_PARALLEL_DOWNLOADS, --max-parallel-downloads MAX_PARALLEL_DOWNLOADS

number of files downloading concurrently [default: 5]

-J WORKERS_PER_DOWNLOAD, --workers-per-download WORKERS_PER_DOWNLOAD

number of worker threads for every file downloading job [default: 4]

-k MIN_SPLIT_SIZE, --min-split-size MIN_SPLIT_SIZE

file split size in bytes, “1048576, 1024K or 2M” for example [default: 1M]

-s CHUNK_SIZE, --chunk-size CHUNK_SIZE

every request range size in bytes, “10240, 10K or 1M” for example [default: 100K]

-e COOKIE, --cookie COOKIE

cookies either in the form of a string (maybe whitespace- and/or semicolon- separated) like “cookie_key=cookie_value cookie_key2=cookie_value2; cookie_key3=cookie_value3”, or a file, e.g. named “cookies.txt”, in the Netscape cookie file format. NB the option -D DIR does not apply to the cookie file

--user-agent USER_AGENT

custom user agent

--referrer REFERRER

HTTP request header “Referer” that applies to all downloads. In particular, use * to tell the downloader to take the request URL as the referrer per download [default: *]

--check-certificate {True,true,TRUE,False,false,FALSE}

whether to verify the server’s TLS certificate or not [default: True]

--ca-certificate CA_CERTIFICATE

path to the preferred CA bundle file (.pem) or directory with certificates in PEM format of trusted CAs. NB the directory must have been processed using the c_rehash utility from OpenSSL. Also, the cert files in the directory each only contain one CA certificate

--certificate CERTIFICATE

path to a single file in PEM format containing the client certificate and optionally a chain of additional certificates. If --private-key is not provided, then the file must contain the unencrypted private key as well

--private-key PRIVATE_KEY

path to a file containing the unencrypted private key to the client certificate

-P {mill,bar,none}, --progress {mill,bar,none}

progress indicator. To disable this feature, use none. [default: mill]

--num-pools NUM_POOLS

number of connection pools [default: 20]

--pool-size POOL_SIZE

max number of connections in the pool [default: 20]

-l {debug,info,warning,error,critical}, --log-level {debug,info,warning,error,critical}

logger level [default: warning]

-c, --continue

resume from the partially downloaded files. This is the default behavior

--no-continue

do not resume from last interruption, i.e. start the download from beginning

-H HEADER, --header HEADER

extra HTTP header, standard or custom, which can be repeated several times, e.g. ‘-H “User-Agent: John Doe” -H “X-BD-Key: One Thousand And One Nights”’.The headers take precedence over the ones specified by other parameters if conflict happens

-u USER_PASS, --user-pass USER_PASS

default HTTP Authentication for ALL the downloads in “user:password” format. Warning: don’t use this option if not all of the downloads need the authentication to avoid leaking credential, use the --netrc-file option instead

--netrc-file NETRC_FILE

a .netrc-like file for HTTP authentication, from which the ‘default’ entry, if present, takes precedence over the --user-pass option

-h, --help

show help message and exit

Examples

$ bdownload https://www.afilelink.com/afile.tar.gz

$ bdownload -O /abspath/to/afile.tar.gz https://www.afilelink.com/afile.tar.gz

$ bdownload -O /abspath/to/a/dir/ https://www.afilelink.com/afile.tar.gz

$ bdownload -O /abspath/to/afile.tar.gz "https://www.afilelink.com/afile.tar.gz\thttps://nianpei.bpfatran.com/afile.tar.gz"

$ bdownload -D path/to/working_dir/ -O relpath/to/working_dir/alias_afile.tar.gz https://www.afilelink.com/afile.tar.gz

$ bdownload -D path/to/working/dir https://www.afilelink.com/afile.tar.gz

$ bdownload -o /abspath/to/file1.zip ~/file2.tgz -L "http://foo.cc/file1.zip" "http://bar.cc/file2.tgz\thttp://bar2.cc/file2.tgz"

$ bdownload -D path/to/working/dir -L "http://foo.cc/file1.zip" "http://bar.cc/file2.tgz\thttp://bar2.cc/file2.tgz"

API indices