Skip to main content

Modernized fork of the Smart Download Manager for Python by iTaybb with CI testing matrix and other 2024 bells and whistles.

Project description

pysmartdl2

GitHub top language PyPI - Python Version GitHub License PyPI - Version PyPI - Downloads

This software is a fork of the pySmartDL or Python Smart Download Manager by iTaybb which appears to not be maintained anymore. I (1) went through its codebase to check if things work as expected in modern (Python 3.8-12+) versions of Python, (2) did some modernizing fixes here and there, (3) fixed broken test suites, (4) implemented automated testing workflows, and (4) restructured the package to modern standards (e.g., pyproject.toml). I plan some feature additions, but original API will be retained, so that you can treat it as a drop-in replacement. Enjoy!

Test suites go over all popular Python versions (Python 3.8 - 3.13) on all four platforms enabled by GitHub Action Runners: Linux (Ubuntu), MacOS (Intel CPU), MacOS (M1 CPU), and Windows. Live status is shown below.

Multi-OS Multi-Python Build

Multi-OS Multi-Python Build2

Multi-OS Multi-Python Build3

Multi-OS Multi-Python Build4

Per the original README, pysmartdl strives to be a full-fledged smart download manager for Python. Main features:

  • Built-in download acceleration (with the multipart downloading technique).
  • Mirrors support.
  • Pause/Unpause feature.
  • Speed limiting feature.
  • Hash checking.
  • Non-blocking, shows the progress bar, download speed and ETA.
  • Full support for custom headers and methods.

Installation

You can install pysmartdl2 from PyPI through pip, with a simple:

pip install pysmartdl2

Or you can install from the source in editable mode, by cloning this repository and:

pip install -e .

Usage

Downloading with it is as simple as creating an instance and starting it:

from pysmartdl2 import SmartDL

url = "https://raw.githubusercontent.com/amkrajewski/pysmartdl2/master/test/7za920.zip"
dest = "."  # <-- To download to current directory 
            # or '~/Downloads/' for Downloads directory on Linux
            # or "C:\\Downloads\\" for Downloads directory on Windows

obj = SmartDL(url, dest)
obj.start()
# [*] 0.23 Mb / 0.37 Mb @ 88.00Kb/s [##########--------] [60%, 2s left]

path = obj.get_dest()

Copyright (C) 2023-2024 Adam M. Krajewski

Copyright (C) 2014-2020 Itay Brandes.

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

pysmartdl2-2.0.1.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

pysmartdl2-2.0.1-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file pysmartdl2-2.0.1.tar.gz.

File metadata

  • Download URL: pysmartdl2-2.0.1.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for pysmartdl2-2.0.1.tar.gz
Algorithm Hash digest
SHA256 70238764afdf3775eb62284cbf53e7fd5afc2a1a78caf765273fb71e36fe4527
MD5 ede9d38d5a5af9efd295227302e3059e
BLAKE2b-256 fb11a513f367b723ae806161c89aa589ee2eb02c1fdc3df74caa09e4726b7b06

See more details on using hashes here.

File details

Details for the file pysmartdl2-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: pysmartdl2-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for pysmartdl2-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0e8be65e799006972000a7281b7b97798f79e0601d9bbfa733015344ff0f40d9
MD5 ad332afcc131a68ad106c1cc7b6696fc
BLAKE2b-256 730a09bcc3579f4709241cd15f92010a9b82ae3fbc0d3e17896bb3dd489cf3f4

See more details on using hashes here.

Supported by

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