Migrate app to Node Electron with modern React UI
Build and Release / build (push) Has been cancelled

This commit is contained in:
Sucukdeluxe
2026-02-27 03:25:56 +01:00
parent 56e4355d6b
commit b96ed1eb7a
35 changed files with 13180 additions and 119 deletions
+58 -91
View File
@@ -1,116 +1,83 @@
# Real-Debrid Downloader GUI
# Real-Debrid Download Manager (Node/Electron)
Kleine Desktop-App mit GUI (Tkinter), um mehrere Links (z. B. 20+) einzufuegen,
ueber Real-Debrid zu unrestricten und direkt auf deinen PC zu laden.
Desktop-App auf **Node.js + Electron + React + TypeScript** mit JDownloader-Style Workflow, optimiert fuer Real-Debrid.
## Features
## Highlights
- Mehrere Links auf einmal (ein Link pro Zeile)
- DLC Import (`.dlc`) ueber dcrypt.it inklusive Paket-Gruppierung
- DLC Drag-and-Drop: `.dlc` direkt in den Links-Bereich ziehen
- Nutzt die Real-Debrid API (`/unrestrict/link`)
- Download-Status pro Link
- Paket-Ansicht: Paket ist aufklappbar, darunter alle Einzel-Links
- Laufende Pakete koennen per Rechtsklick direkt abgebrochen/entfernt werden
- Download-Speed pro Link und gesamt
- Gesamt-Fortschritt
- Download-Ordner und Paketname waehlbar
- Einstellbare Parallel-Downloads (z. B. 20 gleichzeitig)
- Parallel-Wert kann waehrend laufender Downloads live angepasst werden
- Retry-Counter pro Link in der Tabelle
- Automatisches Entpacken nach dem Download
- Hybrid-Entpacken: entpackt sofort, sobald ein Archivsatz komplett ist
- Optionales Auto-Cleanup: Archivteile nach erfolgreichem Entpacken loeschen
- Speed-Limit (global oder pro Download), live aenderbar
- Linklisten als `.txt` speichern/laden
- DLC-Dateien als Paketliste importieren (`DLC import`)
- `Entpacken nach` + optional `Unterordner erstellen (Paketname)` wie bei JDownloader
- `Settings` (JDownloader-Style):
- Nach erfolgreichem Entpacken: keine / Papierkorb / unwiderruflich loeschen
- Bei Konflikten: ueberschreiben / ueberspringen / umbenennen
- ZIP-Passwort-Check mit `serienfans.org` und `serienjunkies.net`
- Multi-Part-RAR wird ueber `part1` entpackt (nur wenn alle Parts vorhanden sind)
- Auto-Update Check ueber GitHub Releases (fuer .exe)
- Optionales lokales Speichern vom API Token
- Modernes, dunkles UI mit Header-Steuerung (Start, Pause, Stop, Speed, ETA)
- Tabs: **Linksammler**, **Downloads**, **Settings**
- Paketbasierte Queue mit Datei-Status, Progress, Speed, Retries
- Paket-Abbruch waehrend laufender Downloads inklusive sicherem Archiv-Cleanup
- `.dlc` Import (Dateidialog und Drag-and-Drop)
- Session-Persistenz (robustes JSON-State-Management)
- Auto-Resume beim Start (optional)
- Reconnect-Basislogik (429/503, Wartefenster, resumable priorisiert)
- Integritaetscheck (SFV/CRC32/MD5/SHA1) nach Download
- Auto-Retry bei Integritaetsfehlern
- Cleanup-Trigger fuer fertige Tasks:
- Nie
- Sofort
- Beim App-Start
- Sobald Paket fertig ist
## Voraussetzung
## Voraussetzungen
- Python 3.10+
- Optional, aber empfohlen: 7-Zip im PATH fuer RAR/7Z-Entpackung
- Alternative fuer RAR: WinRAR `UnRAR.exe` (wird automatisch erkannt)
- Node.js 20+ (empfohlen 22+)
- Windows 10/11 (fuer Release-Build)
- Optional: 7-Zip/UnRAR fuer RAR/7Z Entpacken
## Installation
```bash
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
npm install
```
## Start
## Entwicklung
```bash
python real_debrid_downloader_gui.py
npm run dev
```
## Nutzung
1. API Token von Real-Debrid eintragen (`https://real-debrid.com/apitoken`)
2. Download-Ordner waehlen
3. Optional Paketname setzen (sonst wird automatisch einer erzeugt)
4. Optional Entpack-Ordner waehlen (`Entpacken nach`)
5. Optional `Unterordner erstellen (Paketname)` aktiv lassen
6. Optional `Hybrid-Entpacken` und `Cleanup` setzen
7. Parallel-Wert setzen (z. B. 20)
8. Optional Speed-Limit setzen (KB/s, Modus `global` oder `per_download`)
9. Links einfuegen oder per `Links laden` / `DLC import` importieren
10. `Download starten` klicken
Wenn du 20 Links einfuegst, werden sie als ein Paket behandelt. Downloads landen in einem Paketordner. Beim Entpacken kann derselbe Paketname automatisch als Unterordner genutzt werden.
Bei DLC-Import mit vielen Paketen setzt die App automatisch Paketmarker (`# package: ...`) und verarbeitet die Pakete in einer Queue.
## Auto-Update (GitHub)
1. Standard-Repo ist bereits gesetzt: `Sucukdeluxe/real-debrid-downloader`
2. Optional kannst du es in der App mit `GitHub Repo (owner/name)` ueberschreiben
3. Klicke `Update suchen` oder aktiviere `Beim Start auf Updates pruefen`
4. In der .exe wird ein neues Release heruntergeladen und beim Neustart installiert
Hinweis: Beim Python-Skript gibt es nur einen Release-Hinweis, kein Self-Replace.
## Release Build (.exe)
## Build
```bash
./build_exe.ps1 -Version 1.1.0
npm run build
```
Danach liegt die App unter `dist/Real-Debrid-Downloader/`.
Danach liegen die Artefakte in:
## GitHub Release Workflow
- `build/main`
- `build/renderer`
- Workflow-Datei: `.github/workflows/release.yml`
- Bei Tag-Push wie `v1.0.1` wird automatisch eine Windows-EXE gebaut
- Release-Asset fuer Auto-Update: `Real-Debrid-Downloader-win64.zip`
- Zusaetzlich wird ein Installer gebaut: `Real-Debrid-Downloader-Setup-<version>.exe`
- Installer legt automatisch eine Desktop-Verknuepfung an
## Auto-Installer
- Im GitHub Release findest du direkt die Setup-Datei (`...Setup-<version>.exe`)
- Setup installiert die App unter `Programme/Real-Debrid Downloader`
- Setup erstellt automatisch eine Desktop-Verknuepfung mit App-Icon
## App-Icon
- Das Projekt nutzt `assets/app_icon.png` (aus deinem aktuellen Downloads-Icon)
- Beim Build wird automatisch `assets/app_icon.ico` erzeugt
Beispiel:
## Start (Production lokal)
```bash
git tag v1.0.1
git push origin v1.0.1
npm run start
```
Hinweis: Die App kann nur Links laden, die von Real-Debrid unterstuetzt werden.
## Tests
```bash
npm test
npm run self-check
```
- `npm test`: Unit-Tests fuer Parser/Cleanup/Integrity
- `npm run self-check`: End-to-End-Checks mit lokalem Mock-Server (Queue, Pause/Resume, Reconnect, Paket-Cancel)
## Projektstruktur
- `src/main`: Electron Main Process + Download/Queue Logik
- `src/preload`: sichere IPC Bridge
- `src/renderer`: React UI
- `src/shared`: gemeinsame Typen und IPC-Channel
- `tests`: Unit- und Self-Check Tests
## Hinweise
- Runtime-Dateien liegen im Electron `userData` Verzeichnis:
- `rd_downloader_config.json`
- `rd_session_state.json`
- `rd_downloader.log`
- Die bisherige Python-Datei bleibt vorerst als Legacy-Referenz im Repo, die aktive App ist jetzt Node/Electron.