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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simpledownloadmanager_sfar-0.1.0.tar.gz.
File metadata
- Download URL: simpledownloadmanager_sfar-0.1.0.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce34bb7b35876e0bc81f6e3aa0cd1f9056933a5ade5d39576ce830b18f6d12a0
|
|
| MD5 |
f386d01946ab8782e3a393bb95a9de16
|
|
| BLAKE2b-256 |
6941dd3e4f079a19c972613b688358cd940c495096416c1f97ecd2999222cc43
|
File details
Details for the file simpledownloadmanager_sfar-0.1.0-py3-none-any.whl.
File metadata
- Download URL: simpledownloadmanager_sfar-0.1.0-py3-none-any.whl
- Upload date:
- Size: 40.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f1752014468190ca548cec3dd46b35023826c8fa087baf64fa4505a73c1782e
|
|
| MD5 |
a9a789dfada0ae164d742ff3d633f52c
|
|
| BLAKE2b-256 |
ae17c6d0fbaabd91abea83bd5e117a04a3d1161bd240bbfa0aed4aae52780264
|