YouTube-Downloader ueber den Baka-Proxy inkl. Anmeldung und MediaStore

Neuer YouTube-Bereich im Online-Tab: Adresse einfuegen, herunterladen, der
Titel landet in Meine Musik.

- BakaAuth: Anmeldung gegen baka-net.de/auth, Token verschluesselt auf dem
  Geraet. Der Server meldet Fehler mit HTTP 200 und Text im Rumpf, deshalb
  wird der Inhalt geprueft statt nur der Statuscode.
- YtDownloadService: Proxy fragen, MP3 abholen, halbe Dateien aufraeumen.
  Kuenstler nur aus "Kuenstler - Lied", sonst leer statt geraten.
- MediaStoreBridge (Kotlin): legt die Datei in Music/Melo ab und meldet sie
  dem MediaStore. Noetig, weil der Android-Scan sonst beim naechsten Lauf
  alles wieder als verschwunden markiert.
- SubTabs nach shared/ gezogen (jetzt in Meine Musik und Online genutzt).

177 Tests gruen, flutter analyze ohne Befund, Release-APK baut.
Der Weg ueber den echten Proxy ist noch nicht auf dem Geraet erprobt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018NLW1q1hzEC9goDQ1dJ98d
This commit is contained in:
Hermes (Server)
2026-08-20 19:13:55 +02:00
co-authored by Claude Opus 5
parent a625d70da8
commit 6200c77614
17 changed files with 1210 additions and 51 deletions
+39
View File
@@ -5,6 +5,45 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
## [Unreleased]
### ⬇️ YouTube-Downloader mit Baka-Anmeldung (2026-08-20)
- 🎬 **Musik von YouTube holen:** Im Tab **Online → YouTube** eine Adresse
einfügen, auf *Herunterladen* tippen — fertig. Der Titel landet danach
automatisch in **Meine Musik**.
- 🔑 **Warum eine Anmeldung nötig ist:** Das Herunterladen erledigt der
Baka-Server (yt.baka-net.de), und der nimmt nur Anfragen von angemeldeten
Konten an. Deshalb gibt es im YouTube-Bereich einen Anmelde-Knopf für dein
**Baka-Konto**. Die Anmeldung wird **verschlüsselt auf dem Gerät**
gespeichert und gilt auch nach dem Neustart.
Läuft sie ab, sagt Melo das im Klartext ("Anmeldung abgelaufen — bitte neu
anmelden") statt eine Fehlernummer zu zeigen.
- 📂 **Wo die Musik landet:** In `Music/Melo` — dem **öffentlichen**
Musikordner. Das ist wichtig: Melo liest seine Bibliothek auf Android über
den MediaStore. Eine Datei, die nur in einem App-Ordner läge, wäre beim
nächsten Scan wieder verschwunden. Nebeneffekt: die Musik ist auch in
anderen Apps da.
- 🧹 **Keine Bruchstücke:** Der Download geht erst in einen Zwischenordner.
Erst wenn die Datei vollständig da ist, wandert sie in den Musikordner.
Bricht etwas ab, wird die halbe Datei gelöscht statt als kaputter Titel in
der Bibliothek zu landen.
- 🎤 **Künstler:** Steht der Titel als "Künstler - Lied" da, wird der
Künstler übernommen. Steht da nichts dergleichen, bleibt das Feld leer —
geraten wird nicht.
- 🔧 **Details:**
- Neu: `services/baka_auth.dart` (6 Tests), `services/yt_download_service.dart`
(8 Tests), `services/media_store.dart` (2 Tests) und die native Brücke
`MediaStoreBridge.kt` (MediaStore ab Android 10, Dateisystem + Scanner
davor).
- `WRITE_EXTERNAL_STORAGE` (nur bis Android 9) im Manifest ergänzt.
- Der Online-Tab hat jetzt die Unterreiter **YouTube · Server** (3 Tests);
`SubTabs` liegt dafür in `shared/sub_tabs.dart`.
- ⚠️ Der Anmelde-Server meldet Fehler mit Status 200 und Text im Rumpf —
der Code prüft deshalb den Inhalt, nicht nur den Statuscode.
-**Getestet:** 177 Tests grün (19 neue), `flutter analyze` ohne Befund,
Release-APK baut (22,8 MB).
⚠️ **Ehrlich dazugesagt:** Der Weg über den echten Proxy und das Schreiben
in den Musikordner sind **noch nicht auf dem Handy ausprobiert** — das
geht nur auf dem Gerät. Alles davor ist mit Tests abgedeckt.
### 🧭 Neue Tab-Struktur nach deinen Referenzbildern (2026-08-20)
- 🔀 **Untere Leiste wie auf deinem Bild:** Die Reihenfolge ist jetzt
**Meine Musik · Online · Suchen · Favoriten**. Der frühere Reiter