# Sengakuji Downloader (SengaGrab)

Eine lokale Windows-App für Warteschlangen von Medien, die du selbst erstellt hast oder für deren Download du berechtigt bist.

## Funktionen

- TXT-Import für YouTube-URLs und Suchzeilen wie `Interpret - Titel`
- Prüfmodus vor dem Queue-Start: erkannter Titel, Dauer, geplanter Fallback, geschätzte Dateigröße und mögliche Dubletten
- Persistente Warteschlange für große Imports, Dubletten-Erkennung und Fortsetzen nach Neustart
- Ein Download gleichzeitig in Free, mit Lifetime Premium bis zu drei parallele Downloads
- Genau fünf sichtbare Gesamtversuche mit gestaffelter Wartezeit; danach klare Quarantäne mit Grund
- Klare Ordnerstruktur: `downloads/Queue`, `downloads/Live` und ein gemeinsamer flacher `temp`-Ordner ohne Unterordner
- Audio: MP3, WAV, FLAC
- Video: MP4 mit 240p, 360p, 480p, 720p, 1080p oder automatischem Fallback
- Separat aktualisierbarer `yt-dlp`-Engine-Bestandteil mit Prüfsumme und Rückfallkopie sowie mitgeliefertem `ffmpeg`
- Sichere Programm-Updates aus einem getrennten öffentlichen Binär-Repository: höchstens alle 24 Stunden, passendes Installer-/Portable-Paket und zwingende SHA-256-Prüfung
- Öffentliche Streamer von Twitch, YouTube Live, TikTok Live (experimentell) und Kick lokal folgen; bei Live-Erkennung optional ab diesem Zeitpunkt aufnehmen
- Einmal-Aufnahmen aus dem normalen URL-Feld bleiben strikt von dauerhaften Follows getrennt
- Plattformübergreifende Follow-Verwaltung mit Status, Prüfintervall, Auto-Aufnahme, Bearbeiten und Entfernen
- Zwei gleichzeitige Live-Aufnahmen in Free, mit Lifetime Premium und Bandbreiten-Hinweis bis zu zehn; dazu fünf Minuten Wiederverbindungsfenster und getrennte Benachrichtigungen für Start, Abschluss und Fehler
- Twitch-Aufnahmen verwenden bevorzugt Streamlink; dadurch kann dessen öffentlicher Twitch-Pluginpfad eingeblendete Werbeunterbrechungs-Platzhalter filtern

Browser-Cookies werden nur auf ausdrücklichen Wunsch lokal aus einer gewählten Browser-Sitzung gelesen und niemals gespeichert oder exportiert. Die App enthält keine Umgehung von DRM, CAPTCHA oder Zugriffsschutz. Bei temporären Limits pausiert sie kontrolliert und versucht es später erneut. Eine Live-Aufnahme beginnt bei der Erkennung und kann keine bereits vergangenen Live-Minuten nachholen.

## Lokaler Start (Entwicklung)

```powershell
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m sengakuji.main
```

Beim ersten Start prüft die App die offizielle `yt-dlp.exe` als getrennte Engine. Ist ein Update verfügbar, entscheidest du selbst über „jetzt installieren“ oder „später“.

## Paket bauen

Für den lizenzkostenfreien Windows-Installer wird NSIS 3.12 oder neuer
verwendet. Ohne NSIS entsteht weiterhin das portable ZIP-Paket.

```powershell
.\tools\package_release.ps1 -Version 0.5.7.1
```

Das Paket liegt anschließend unter `build\release-<version>\packages`. Vierstellige Versionen bleiben intern; öffentliche GitHub-Releases verwenden erst nach ausdrücklicher Freigabe einen dreistelligen Versionssprung.

## Free, Premium und Lizenzserver

Die verbindliche Funktionsmatrix und der Aktivierungsablauf stehen in
[`docs/FREE_PREMIUM_AND_LICENSING.md`](docs/FREE_PREMIUM_AND_LICENSING.md).
Der unabhängige, produktneutrale PostgreSQL-Lizenzstack einschließlich
Portainer-Datei, Owner-Center und verschlüsseltem Backup liegt unter
[`services/license-server`](services/license-server/README.md).

## TXT-Format

```text
# Kommentar
https://www.youtube.com/watch?v=...
Interpret - Titel
```

URL-Zeilen sind eindeutig. Bei Suchzeilen sollte vor dem Download der ermittelte Treffer geprüft werden.
