Skip to main content

Simple desktop download manager with segmented downloads

Project description

Simple Download Manager

Simple Download Manager is a complete desktop application built with Python and CustomTkinter. It downloads files from direct URLs, accelerates transfers with segmented multi-threading, supports pause and resume, and keeps a persistent download history across application restarts.

SDM

Features

The project includes:

  • a src-based package layout
  • a runnable CustomTkinter desktop shell
  • domain models for downloads and status tracking
  • an HTTP probe service that inspects remote files before download
  • a simple download manager with worker threads, pause, resume, cancel, partial resume, and file assembly
  • SQLite-backed task history loaded automatically on startup
  • SQLite-backed per-segment metadata for richer recovery and diagnostics
  • configurable default save location, thread count, retry count, and max concurrent downloads
  • queueing when the concurrent download limit is reached
  • optional scheduled start times per download
  • shared bandwidth limiting across active downloads
  • queue actions for removing tasks and opening download folders
  • direct open-file actions for completed downloads
  • advanced progress with live speed and ETA
  • a recent activity panel and in-app completion/failure notifications
  • a live task details dialog for segment-level diagnostics
  • unit and integration tests for speed tracking, persistence, segment resume, and end-to-end downloads

Functional Coverage

This implementation satisfies the project requirements for:

  • file downloading from URLs
  • multi-threaded segmented downloads
  • HTTP Range request handling
  • error handling with automatic retry
  • pause and resume
  • progress monitoring with percentage, speed, and ETA
  • download history persistence
  • download scheduling
  • bandwidth limiting
  • resume after application restart
  • queue management

Architecture

graph TD
    UI[UI Layer] --> APP[Application Controller]
    APP --> DM[Download Manager]
    DM --> HTTP[HTTP Probe Service]
    DM --> CTRL[Thread Controller]
    CTRL --> WORKERS[Segment Workers]
    CTRL --> ASSEMBLER[File Assembler]
    DM --> CORE[Download Domain Model]
    DM --> PERSIST[SQLite History Store]

The application follows a layered desktop architecture with a clear split between UI, orchestration, download execution, and persistence. Communication between components is handled through Python objects, threads, and HTTP requests.

Project Layout

Simple Download Manager/
├── main.py
├── pyproject.toml
├── requirements.txt
├── src/
│   └── sdm/
│       ├── app.py
│       ├── core/
│       ├── models/
│       └── ui/
└── tests/

Testing

Run the full automated suite:

python -m pytest

Current result: 19 passed.

Run

Create a virtual environment and install dependencies:

# Optional, but highly recommended
python3 -m venv venv
python -m pip install -r requirements.txt

If you are using Debian/Ubuntu:

sudo apt update
sudo apt install python3-tk

Finally, run the application:

python main.py

After publishing to PyPI, you will also be able to install it with:

python -m pip install simpledownloadmanager-sfar
sdm

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for the full text.

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

simpledownloadmanager_sfar-0.1.0.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

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

simpledownloadmanager_sfar-0.1.0-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file simpledownloadmanager_sfar-0.1.0.tar.gz.

File metadata

File hashes

Hashes for simpledownloadmanager_sfar-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ce34bb7b35876e0bc81f6e3aa0cd1f9056933a5ade5d39576ce830b18f6d12a0
MD5 f386d01946ab8782e3a393bb95a9de16
BLAKE2b-256 6941dd3e4f079a19c972613b688358cd940c495096416c1f97ecd2999222cc43

See more details on using hashes here.

File details

Details for the file simpledownloadmanager_sfar-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for simpledownloadmanager_sfar-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f1752014468190ca548cec3dd46b35023826c8fa087baf64fa4505a73c1782e
MD5 a9a789dfada0ae164d742ff3d633f52c
BLAKE2b-256 ae17c6d0fbaabd91abea83bd5e117a04a3d1161bd240bbfa0aed4aae52780264

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