Skip to main content

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

Additional Built-in Features

  • YouTube Support: Download YouTube videos in the highest available quality and automatically merge audio and video streams using StreamSnapper library

📦 Installation

# Install the stable version of TurboDL from PyPI
pip install --upgrade turbodl

# Install the beta version of TurboDL from GitHub
pip install --upgrade git+https://github.com/henrique-coder/turbodl.git@main

# Install the development version of TurboDL from GitHub
pip install --upgrade git+https://github.com/henrique-coder/turbodl.git@dev

🔍 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

# [!] Make sure you have git, make and uv installed

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

# Enter the project directory
cd turbodl

# Install project dependencies (using uv)
make install

# Lint and format code
make lint
make format

# Run tests
make tests

🤝 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.

Metadata

Release files for turbodl 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for turbodl 0.7.0
File Size Uploaded
turbodl-0.7.0.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for turbodl 0.7.0
File Interpreter ABI Platform
turbodl-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 46.9 kB

Release files / turbodl-0.7.0.tar.gz

Download URL turbodl-0.7.0.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
005810f57330597aaec5fc305d9ed56553e2359b4f01735818e1d191397d4bef
BLAKE2b-256 checksum
How to use checksums
105d3b4234658109d14eed7a387f9dd1b648a2d666053475ad85ee70275d4316
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2025.

Transparency log

Release files / turbodl-0.7.0-py3-none-any.whl

Download URL turbodl-0.7.0-py3-none-any.whl
Size 25.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65a8f810af328ec7bb3374126d58b5e0db8e47128071504acde5b3f157aef842
BLAKE2b-256 checksum
How to use checksums
aeb8b8c221b55fc32aed4e6400eed0ebf0c1f0dfcd91fffbd4963e0293f3b96a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page