fix(backend): Download-Filter konnte ohne Titel- oder Kuenstlermerkmal zugreifen

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-24 23:31:29 +02:00
1 parent 1432a960fb
commit 06b13caea9
3 files changed
+111 -15

No files matched your search

+22
View File
@@ -217,6 +217,28 @@ Die Android-App zählt eigenständig weiter (mehrere APKs pro Release). Welche d
erreichbar war) und zählt für die Seitenleiste jetzt zur Bibliothek statt zu Entdecken.
### Fixed
- **Der Download-Filter konnte den falschen Titel speichern — zwei Löcher, ein Grund (Backend)** —
gemeldet mit „銀髪の少年" (Yoshihisa Hirano, HUNTER×HUNTER) und „Dearly Beloved" (TPR): beide Male
kam etwas anderes an.
- **Die Kaskadenschritte 3 und 4 lassen die Künstlerprüfung fallen** — bewusst, damit
Label-Kanäle durchkommen. Übrig bleibt dann Titel + Dauer. Bei „Dearly Beloved" reicht das
nicht: es gibt Rocksongs, die genau so heißen, und einer davon lag im Dauerfenster.
- **Für japanische Titel gab es überhaupt keine Titelprüfung.** `buildTitleKeywords` lieferte
dafür eine leere Liste (japanische Titel haben keine Wortgrenzen, und Art Tracks sind oft
romanisiert). Zusammen mit Schritt 3/4 blieb damit **allein die Dauer** übrig — und auf einem
Soundtrack-Album passt fast jedes andere Stück desselben Komponisten in dasselbe Fenster.
Genau das ist bei „銀髪の少年" passiert.
- **Behoben in drei Schritten:** japanische Titel bekommen ein Muster aus *Originaltitel oder
Romaji-Fassung* (Art Tracks tragen üblicherweise das eine oder das andere; Leerzeichen und
Bindestriche bleiben frei, weil Uploader sie unterschiedlich setzen). Ein Schritt **ohne**
Titelprüfung läuft jetzt immer **mit** Künstlerprüfung, egal was die Kaskade lockern wollte.
Und japanische Künstlernamen werden gegen das `artist`-Feld geprüft — der Kanalname steht kaum
je in Kanji, das Feld der Art Tracks dagegen schon; vorher hatten sie gar keine Prüfung.
- Bleibt am Ende weder ein Titel- noch ein Künstlermerkmal übrig, wird **gar nicht gesucht**:
ohne Merkmal landet sonst der erste Treffer passender Länge auf der Platte. Der Direktlink im
Importer ist dafür der vorgesehene Weg.
- Fünf neue Prüfungen in `backend/test/ytdlp.test.js` (59 grün), darunter „anderes Stück
desselben Albums darf nicht passen".
- **Das Mischen-Symbol zeigte nie an, dass es an ist (Android)** — und der Grund lag nicht in der
Anzeige. `toggleShuffle` baute den Rest der Warteschlange als Schleife aus `removeMediaItem` +
`addMediaItem` um; dazwischen hatte der Controller vorübergehend weniger Titel als unsere Liste.