Skip to main content

TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.

Project description

TurboDL

PyPI - Version PyPI - Downloads Python Versions License

🚀 Overview

TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.

✨ Key Features

  • Smart Connection Management: Dynamically calculates the optimal number of connections based on file size and network speed
  • Intelligent Acceleration: Built-in sophisticated download acceleration techniques that split downloads into multiple parallel streams
  • Automatic Retry System: Efficiently retries failed requests with exponential backoff strategy
  • Pre-Download Intelligence: Automatically detects file information, size, and type before download begins
  • Seamless Redirection: Handles HTTP redirects automatically for successful downloads
  • Memory Optimization: Intelligently uses RAM buffering to reduce disk I/O overhead
  • Data Integrity: Supports post-download hash verification (MD5, SHA256, etc.)
  • Real-time Feedback: Provides an elegant, accurate progress bar with detailed statistics
  • Cross-platform Compatibility: Works consistently across all major operating systems

📦 Installation

pip install --upgrade turbodl  # Install the latest version of TurboDL

🔍 Examples

Basic Usage

from turbodl import TurboDL

turbodl = TurboDL()
turbodl.download(
    url="https://example.com/file.txt",  # Your download URL
    output_path="path/to/file"  # The file/path to save the downloaded file
)

# Access the absolute path to the downloaded file
print(turbodl.output_path)

Advanced Usage

from turbodl import TurboDL

turbodl = TurboDL(
    max_connections="auto",
    connection_speed_mbps=100,
    show_progress_bar=True,
)
turbodl.download(
    url="https://example.com/file.txt",
    output_path="path/to/file",
    pre_allocate_space=False,
    use_ram_buffer="auto",
    overwrite=True,
    headers=None,
    inactivity_timeout=120,
    timeout=None,
    expected_hash=None,
    hash_type="md5",
)

# Access the absolute path to the downloaded file
print(turbodl.output_path)

Command Line Interface

# Show help for all commands
turbodl --help

# Show help for the download command
turbodl download --help

# Download a file
turbodl download [...] https://example.com/file.txt path/to/file

📊 CLI Demo

TurboDL CLI Demo

📋 Parameters

TurboDL Class Parameters

Parameter Type Default Description
max_connections int, Literal["auto"] "auto" Maximum connections for parallel downloading. Minimum is 1 and maximum is 32.
connection_speed_mbps float 100 Your current internet connection speed in Mbps.
show_progress_bar bool True Whether to display a progress bar.

Download Method Parameters

Parameter Type Default Description
url str - The URL of the file to download.
output_path str, PathLike, None None The path to save the downloaded file. If it is a directory, filename is derived from server response. If None, the current working directory is used.
pre_allocate_space bool False Whether to pre-allocate disk space for the file.
use_ram_buffer bool, Literal["auto"] "auto" Use RAM buffer for download. If set to False, the file will be downloaded continuously to disk. If set to True, the file will be downloaded with the help of RAM memory. If set to "auto", the RAM buffer will be disabled if the output path is a RAM directory and enabled otherwise.
overwrite bool True Whether to overwrite the file if it already exists.
headers dict[str, str], None None A dictionary of headers to include in the request.
inactivity_timeout int 120 Timeout in seconds after the connection is considered idle. None means no timeout.
timeout int None Overall timeout in seconds. None means no timeout.
expected_hash str, None None The expected hash value of the downloaded file. If provided, the file will be verified after download.
hash_type Literal["md5", "sha1", "sha224", "sha256", "sha384", "sha512", "blake2b", "blake2s", "sha3_224", "sha3_256", "sha3_384", "sha3_512", "shake_128", "shake_256"] "md5" Hash algorithm to use for verification. Available: md5, sha1, sha224, sha256, sha384, sha512, blake2b, blake2s, sha3_224, sha3_256, sha3_384, sha3_512, shake_128, shake_256.

🛠️ Development

# Clone the repository
git clone https://github.com/henrique-coder/turbodl.git
cd turbodl

# Install Poetry in your local environment
pip install --upgrade poetry

# Install project dependencies
make install

# Run tests
make tests

# Lint and format code
make lint
make format

🤝 Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

👥 Contributors

📄 License

Distributed under the MIT License. See LICENSE for more information.

📊 Project Status

TurboDL is in active development. Check the releases page for the latest updates.

🌟 Star the Project

If you find this project useful, please consider giving it a star on GitHub.

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

turbodl-0.5.1.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

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

turbodl-0.5.1-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file turbodl-0.5.1.tar.gz.

File metadata

  • Download URL: turbodl-0.5.1.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for turbodl-0.5.1.tar.gz
Algorithm Hash digest
SHA256 6bd75351e193e834803fc982db25b27ab061d7d6a4eb4941cc5aa1cfbba3afaa
MD5 446fe6dcd24c0ab884cd114eaa6e7d64
BLAKE2b-256 ff809916d8d0499bee4fe69891db7ebf5cd2e10a9ce19a46232d6eeaf04ad1f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodl-0.5.1.tar.gz:

Publisher: release.yaml on henrique-coder/turbodl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbodl-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: turbodl-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 24.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for turbodl-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2dd0275f13e02a222a59add07d55b3dcd5a4d9fd4c202fefb5ee6ab080137e54
MD5 b824833c320b81c723a510d5b28d6ae1
BLAKE2b-256 24a5879377225cdf29311639d776787952f886d685a11becc1847ad629beaad6

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodl-0.5.1-py3-none-any.whl:

Publisher: release.yaml on henrique-coder/turbodl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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