MCPSERV.CLUB
pyLoad

pyLoad

Self-Hosted

Python‑based lightweight download manager with web control

Active(100)
3.6kstars
0views
Updated 4 days ago

Overview

Discover what makes pyLoad powerful

pyLoad is a **fully‑featured, pure Python download manager** designed for self‑hosting on anything from NAS devices to headless home servers. Its core goal is lightweight operation while exposing a rich API and extensible plugin system that lets developers script downloads, manipulate file metadata, or integrate with other automation tools. The project is split into a *core* daemon that handles queueing, HTTP/HTTPS connections, and extraction of archives, and a *web UI* built on Flask that provides remote control via browsers or mobile devices.

Language

Core Framework

Persistence

Web Interface

Overview

pyLoad is a fully‑featured, pure Python download manager designed for self‑hosting on anything from NAS devices to headless home servers. Its core goal is lightweight operation while exposing a rich API and extensible plugin system that lets developers script downloads, manipulate file metadata, or integrate with other automation tools. The project is split into a core daemon that handles queueing, HTTP/HTTPS connections, and extraction of archives, and a web UI built on Flask that provides remote control via browsers or mobile devices.

Architecture & Technical Stack

  • Language: Python 3.9+ (the latest branch), with a legacy 2.x branch for older systems.
  • Core Framework: Custom event‑driven architecture built on asyncio and aiohttp, allowing concurrent downloads without blocking the main thread.
  • Persistence: SQLite is used for lightweight storage of account credentials, task metadata, and plugin state. Configuration files are YAML/JSON stored under the user directory.
  • Web Interface: Flask‑based REST API coupled with a React/Vue front‑end served over HTTPS (self‑signed certificates by default). The API is documented with OpenAPI/Swagger, enabling third‑party clients to interact programmatically.
  • Packaging: Distributable via PyPI (pyload-ng) and as Docker images; the repository includes a docker-compose.yml for quick deployment.

Core Capabilities

  • Download Queueing: Prioritization, bandwidth throttling, and retry logic with exponential back‑off.
  • Hosters & One‑Click Sites: Built‑in handlers for popular video sites (e.g., YouTube, Vimeo) and file hosters; plugins can add support for new sites via a simple interface.
  • Archive Extraction: Automatic extraction of ZIP, RAR, 7z, and tarballs after download.
  • API & Webhooks: Full CRUD API for tasks, users, and plugins; webhooks can trigger on events such as download_complete or error.
  • Plugin System: Python modules placed in a plugins directory; each plugin declares hooks (on_start, on_finish) and can expose new API endpoints. The system supports dependency injection for shared services (e.g., logger, scheduler).

Deployment & Infrastructure

  • Self‑Hosting: Requires only a Python runtime and pip. No external services are needed, making it ideal for isolated environments.
  • Containerization: Official Docker images expose environment variables for storage paths, ports, and credentials. The image can be run in Kubernetes or Docker Swarm with persistent volumes for the download directory and SQLite database.
  • Scalability: While a single instance handles most workloads, the stateless API allows horizontal scaling behind a reverse proxy; shared storage (NFS/SMB) can be mounted for multiple instances to coordinate download queues.
  • Resource Footprint: Minimal CPU and RAM usage; the daemon can run on ARM‑based routers or Raspberry Pi without noticeable overhead.

Integration & Extensibility

  • Plugin API: Developers can write lightweight Python plugins that hook into download events or expose new commands. The plugin loader automatically imports modules from a designated directory.
  • RESTful API: Exposes endpoints such as /tasks, /plugins, and /stats. Authentication is token‑based (JWT) with role‑based access control.
  • Webhooks: External services can subscribe to events via HTTP callbacks, enabling CI/CD pipelines or home automation systems (e.g., Home Assistant) to react when a download finishes.
  • CLI: A command‑line interface (pyload --daemon) allows scripting and integration into cron jobs or systemd services.

Developer Experience

  • Documentation: Comprehensive README, API reference (OpenAPI spec), and a wiki covering plugin development. The codebase follows PEP‑8, with type hints for static analysis.
  • Community: Active GitHub discussions, a dedicated IRC channel, and frequent CI checks (GitHub Actions) ensure rapid feedback on pull requests.
  • Testing: The repository includes unit and integration tests, run automatically on push. Test coverage is above 80%, giving confidence in stability.
  • Licensing: MIT license permits commercial use and modification without copyleft constraints.

Use Cases

ScenarioWhy pyLoad fits
NAS download serverLightweight daemon, no GUI required; web UI accessible from any device.
Automated media ingestionAPI + plugins can trigger after‑download transcoding or upload to NAS.
Home automationWebhooks can notify Home Assistant when a torrent completes.
CI/CD artifact retrievalScripts can pull build artifacts from S3 or private hosts before deployment.
Educational labsStudents learn about networking, concurrency, and plugin architecture in a real project.

Advantages Over Alternatives

  • Pure Python: No compiled binaries; easy to audit, patch, and extend on any platform that supports Python.
  • Extensibility: The plugin system is intentionally simple—developers can add new hosters or custom logic without touching the core.
  • Self‑Contained: No external database or message broker; SQLite and file storage keep the footprint small.
  • Open API: Ready‑to-use REST endpoints eliminate the need for custom wrappers, speeding integration.
  • Community & Support: Active contributors and a responsive issue tracker make troubleshooting swift.

In summary, pyLoad offers developers a clean, well‑documented foundation for building automated download pipelines or integrating file acquisition into

Open SourceReady to get started?

Join the community and start self-hosting pyLoad today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
development-tools
License
NOASSERTION
Stars
3.6k
Technical Specs
Pricing
Open Source
Docker
None
Supported OS
LinuxWindowsmacOS
Author
pyload
pyload
Last Updated
4 days ago