Skip to main content

A simple, efficient, general-purpose Python multithreaded download library

Project description

auto-download

A simple, efficient, general-purpose Python multithreaded download library.

Installation

pip install autoDownload

Usage

Basic Usage

In Program

import autoDownload

taskConfig = autoDownload.TaskConfig(
    url='https://example.com/', # download url
    file='example.zip', # save path
    method='GET', # download method, default is 'GET'
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.142.86 Safari/537.36'}, # download headers, default is {}
    **kwargs
)

# It will block the current thread until it completes
autoDownload.request(taskConfig)

# It will return an awaitable object (see https://docs.python.org/3.13/library/asyncio-task.html#awaitables), which is useful in asynchronous programming
autoDownload.asyncRequest(taskConfig)

# It will return nothing, and when it completes, the callback function will be called. This is useful in functional programming
autoDownload.callbackRequest(taskConfig, callback)

In Command Line

auto-download [-h] [-f FILE] [-m MAX] [-r RETRY] [-H HEADER] Url

For more information, see:

auto-download -h

Advanced Usage

Customize how tasks are waiting

# It will return a TaskResult object.
res=autoDownload.rawRequest(taskConfig)

# res.event is a threading.Event object, which can be used to wait for the task to complete.
res.event.wait()

# res.ok is a bool object, which indicates whether the task was successful.
if res.ok:
    # res.task is a autoDownload.download.Task object, which is the main controller for the task.
    print(f"Task{res.task.identity} completed successfully!")

else:
    # res.err is a TaskError object, which indicates the reason for the failure.
    raise res.err

Customize the threading pool or the adapter

# You can customize almost everything in the threading pool or the adapter
adapter=autoDownload.adapters.Adapter()
pool=autoDownload.pools.Pool(maxThread=10, adapter=adapter)
unit=autoDownload.unit.Unit(pool)

unit.request(taskConfig)

Show the progress of the download in the command line

progress=autoDownload.progress.DownloadProgress(
    task1, task2, task3,
    showTotal=True, # show the total progress
    showParts=True, # show the progress of each part
    showMerge=True, # show the progress of the merge
)
with progress:
    while True:
        progress.refresh()
        time.sleep(0.5)

License

The Project is released under the Mulan Public License 2.0.

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

autodownload-0.1.2.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autoDownload-0.1.2-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file autodownload-0.1.2.tar.gz.

File metadata

  • Download URL: autodownload-0.1.2.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for autodownload-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d3bd67dafc719f19bdbbe498f7088f537d1d8e7270cecd4a46de693adeba6e99
MD5 953545f3dc2f31908edc4a66b2ef5d25
BLAKE2b-256 bf671934aafdb7a4206db7633233cda109a96b94ce38b607f5eeba1116bc2612

See more details on using hashes here.

File details

Details for the file autoDownload-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: autoDownload-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for autoDownload-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2369cd392ac4ef5fd8e06a062df211394afb5bb672819d9295b79760210e9efb
MD5 0471ea6bef6ecb06d0f4de794b287f63
BLAKE2b-256 7abfcce2a0a00437c3f5de04392ca4a5a8901a31ac045493347b68bd93fb1c61

See more details on using hashes here.

Supported by

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