Skip to content

velectron/SimpleDownloadManager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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]
Loading

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

License

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%