Desktop downloader
The JVM extractor used RandomAccessFileInStream for multi-part RAR archives, which only provides a single file stream. 7z-JBinding requires VolumedArchiveInStream to access additional volume parts via callback. Added RAR_MULTIPART_RE and RAR_OLDSPLIT_RE patterns to detect multi-volume RAR archives and route them through VolumedArchiveInStream, fixing "Archive file can't be opened with any of the registered codecs" errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| assets | ||
| installer | ||
| resources/extractor-jvm | ||
| scripts | ||
| src | ||
| tests | ||
| _upload_release.mjs | ||
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.mts | ||
| vitest.config.ts | ||
Multi Debrid Downloader
Desktop downloader for Real-Debrid, Mega-Debrid, BestDebrid, and AllDebrid 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 Codeberg Releases.
- Long path support (>260 characters) on Windows.
Installation
Option A: prebuilt releases (recommended)
- Download a release from the Codeberg Releases page.
- Run the installer or portable build.
- Add your debrid tokens in Settings.
Releases: https://codeberg.org/Sucukdeluxe/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:codeberg -- <version> [notes] |
One-command version bump + build + tag + Codeberg release upload |
One-command Codeberg release
npm run release:codeberg -- 1.4.42 "- Maintenance update"
This command will:
- Bump
package.jsonversion. - Build setup/portable artifacts (
npm run release:win). - Commit and push
mainto your Codeberg remote. - Create and push tag
v<version>. - Create/update the Codeberg release and upload required assets.
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, JVM runtime (
resources/extractor-jvm), or force legacy mode withRD_EXTRACT_BACKEND=legacy. - 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 Codeberg Releases.
License
MIT - see LICENSE.