Download System v2 � Complete rewrite of error handling, retry logic, resume, and extraction
The running download status (e.g. "Download läuft", "Warte auf Festplatte") now shows the full provider label including the source mode, e.g. "Mega-Debrid (API)" instead of just "Mega-Debrid". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| assets | ||
| installer | ||
| resources/extractor-jvm | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| CLAUDE.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.mts | ||
| vitest.config.ts | ||
Multi Debrid Downloader
Desktop downloader with fast queue management, automatic extraction, and robust error handling.
Why this tool?
- Familiar download-manager workflow: collect links, start, pause, resume, and finish cleanly.
- Multiple debrid providers in one app, including automatic fallback.
- Built for stability with large queues: session persistence, reconnect handling, resume support, and integrity verification.
Core features
Queue and download engine
- Package-based queue with file status, progress, ETA, speed, and retry counters.
- Start, pause, stop, and cancel for both single items and full packages.
- Multi-select via Ctrl+Click for batch operations on packages and items.
- Duplicate handling when adding links: keep, skip, or overwrite.
- Session recovery after restart, including optional auto-resume.
- Circuit breaker with escalating backoff cooldowns to handle provider outages gracefully.
Debrid and link handling
- Supported providers:
realdebrid,megadebrid,bestdebrid,alldebrid. - Configurable provider order: primary + secondary + tertiary.
- Optional automatic fallback to alternative providers on failures.
.dlcimport via file picker and drag-and-drop.
Extraction, cleanup, and quality
- JVM-based extraction backend using SevenZipJBinding + Zip4j (supports RAR, 7z, ZIP, and more).
- Automatic fallback to legacy UnRAR/7z CLI tools when JVM is unavailable.
- Auto-extract with separate target directory and conflict strategies.
- Hybrid extraction: simultaneous downloading and extracting with smart I/O priority throttling.
- Nested extraction: archives within archives are automatically extracted (one level deep).
- Pre-extraction disk space validation to prevent incomplete extracts.
- Right-click "Extract now" on any package with at least one completed item.
- Post-download integrity checks (
CRC32,MD5,SHA1) with auto-retry on failures. - Completed-item cleanup policy:
never,immediate,on_start,package_done. - Optional removal of link artifacts and sample files after extraction.
Auto-rename
- Automatic renaming of extracted files based on series/episode patterns.
- Multi-episode token parsing for batch renames.
UI and progress
- Visual progress bars with percentage overlay for packages and individual items.
- Real-time bandwidth chart showing current download speeds.
- Persistent download counters: all-time totals and per-session statistics.
- Download history for completed packages.
- Vertical sidebar with organized settings tabs.
- Hoster display showing both the original source and the debrid provider used.
Convenience and automation
- Clipboard watcher for automatic link detection.
- Minimize-to-tray with tray menu controls.
- Speed limits globally or per download.
- Bandwidth schedules for time-based speed profiles.
- Built-in auto-updater via
git.24-music.deReleases. - Long path support (>260 characters) on Windows.
Installation
Option A: prebuilt releases (recommended)
- Download a release from the
git.24-music.deReleases page. - Run the installer or portable build.
- Add your debrid tokens in Settings.
Releases: https://git.24-music.de/Administrator/real-debrid-downloader/releases
Option B: build from source
Requirements:
- Node.js
20+(recommended22+) - npm
- Windows
10/11(for packaging and regular desktop use) - Java Runtime
8+(for SevenZipJBinding sidecar backend) - Optional fallback: 7-Zip/UnRAR if you force legacy extraction mode
npm install
npm run dev
NPM scripts
| Command | Description |
|---|---|
npm run dev |
Starts main process, renderer, and Electron in dev mode |
npm run build |
Builds main and renderer bundles |
npm run start |
Starts the app locally in production mode |
npm test |
Runs Vitest unit tests |
npm run self-check |
Runs integrated end-to-end self-checks |
npm run release:win |
Creates Windows installer and portable build |
npm run release:gitea -- <version> [notes] |
One-command version bump + build + tag + release upload to git.24-music.de |
npm run release:codeberg -- <version> [notes] |
Legacy path for old Codeberg workflow |
One-command git.24-music release
npm run release:gitea -- 1.6.31 "- Maintenance update"
This command will:
- Bump
package.jsonversion. - Build setup/portable artifacts (
npm run release:win). - Commit and push
mainto yourgit.24-music.deremote. - Create and push tag
v<version>. - Create/update the Gitea release and upload required assets.
Required once before release:
git remote add gitea https://git.24-music.de/<user>/<repo>.git
PowerShell token setup:
$env:GITEA_TOKEN="<dein-token>"
Typical workflow
- Add provider tokens in Settings.
- Paste/import links or
.dlccontainers. - Optionally set package names, target folders, extraction, and cleanup rules.
- Start the queue and monitor progress in the Downloads tab.
- Review integrity results and summary after completion.
Project structure
src/main- Electron main process, queue/download/provider logicsrc/preload- secure IPC bridge between main and renderersrc/renderer- React UIsrc/shared- shared types and IPC contractstests- unit tests and self-check testsresources/extractor-jvm- SevenZipJBinding + Zip4j sidecar JAR and native libraries
Data and logs
The app stores runtime files in Electron's userData directory, including:
rd_downloader_config.jsonrd_session_state.jsonrd_downloader.log
Troubleshooting
- Download does not start: verify token and selected provider in Settings.
- Extraction fails: check archive passwords and native extractor installation (7-Zip/WinRAR). Optional JVM extractor can be forced with
RD_EXTRACT_BACKEND=jvm. - Very slow downloads: check active speed limit and bandwidth schedules.
- Unexpected interruptions: enable reconnect and fallback providers.
- Stalled downloads: the app auto-detects stalls within 10 seconds and retries automatically.
Changelog
Release history is available on git.24-music.de Releases.
v1.6.61 (2026-03-05)
- Fixed leftover empty package folders in
Downloader Unfertigafter successful extraction. - Resume marker files (
.rd_extract_progress*.json) are now treated as ignorable for empty-folder cleanup. - Deferred post-processing now clears resume markers before running empty-directory removal.
v1.6.60 (2026-03-05)
- Added package-scoped password cache for extraction: once the first archive in a package is solved, following archives in the same package reuse that password first.
- Kept fallback behavior intact (
""and other candidates are still tested), but moved empty-password probing behind the learned password to reduce per-archive delays. - Added cache invalidation on real
wrong_passwordfailures so stale passwords are automatically discarded.
v1.6.59 (2026-03-05)
- Switched default extraction backend to native tools (
legacy) for more stable archive-to-archive flow. - Prioritized 7-Zip as primary native extractor, with WinRAR/UnRAR as fallback.
- JVM extractor remains available as opt-in via
RD_EXTRACT_BACKEND=jvm.
v1.6.58 (2026-03-05)
- Fixed extraction progress oscillation (
1% -> 100% -> 1%loops) during password retries. - Kept strict archive completion logic, but normalized in-progress archive percent to avoid false visual done states before real completion.
v1.6.57 (2026-03-05)
- Fixed extraction flow so archives are marked done only on real completion, not on temporary
100%progress spikes. - Improved password handling: after the first successful archive, the discovered password is prioritized for subsequent archives.
- Fixed progress parsing for password retries (reset/restart handling), reducing visible and real gaps between archive extractions.
License
MIT - see LICENSE.