fix(backend): Schraegstrich im Namen und zu lockere Titelsuche fuehrten auf die falsche Datei
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
eb72e5c27d
commit
24558497da
4 files changed
+193
-53
No files matched your search
@@ -159,6 +159,33 @@ nur zu zeigen, was drinsteht.
|
||||
vier Anfragen gleichzeitig; bei einem Deezer-Fehler wird der abgelaufene Stand ausgeliefert
|
||||
statt einer leeren Liste.
|
||||
|
||||
### Fixed
|
||||
- **Ein „/" im Künstler- oder Albumnamen führte den Metadaten-Editor auf die falsche Datei** —
|
||||
beim Bearbeiten von „K/DA – VILLAIN" meldete das Backend, die gefundene Datei enthalte
|
||||
„Bad Omens – Like A Villain". Zwei Fehler trafen aufeinander:
|
||||
- **Der gemeldete Pfad kann es gar nicht geben.** Navidrome baut ihn aus den Tags
|
||||
(`fakePath()`): `{AlbumArtist}/{Album}/{DD}-{TT} - {Titel}`. Steht ein Schrägstrich **im**
|
||||
Namen, wird daraus eine zusätzliche Verzeichnisebene — „K/DA/ALL OUT/…" statt des Ordners
|
||||
`K_DA`, den unser `sanitize()` beim Herunterladen angelegt hat. Dasselbe bei „POP/STARS" →
|
||||
`POP_STARS`. Der Pfad zeigt also ins Leere, und die Suche fällt auf Ähnlichkeit zurück.
|
||||
- **Die Ähnlichkeitssuche war zu großzügig.** Sie nahm jede Datei, deren Stamm auf den Titel
|
||||
**endet** — und „bad omens - like a villain" endet nun einmal auf „villain". Getroffen wird
|
||||
jetzt nur noch ein vollständiges Feld des Dateinamens: der ganze Stamm, oder der Teil hinter
|
||||
einem „ - ". Die Endsilben-Regel ist ersatzlos weg.
|
||||
- Neu davor: der Ordner wird **aus den Tags nachgebaut**, genau so wie der Downloader ihn
|
||||
angelegt hätte (Schrägstrich → `_`, erster Künstler), und zuerst dort gesucht. Das ist gezielt
|
||||
statt geraten und macht die Ähnlichkeitssuche für diesen Fall überflüssig.
|
||||
- Dass der Fehler überhaupt sichtbar wurde, lag am Tag-Abgleich aus 2.3: er hat den Fehlgriff
|
||||
erkannt und abgebrochen, statt die falsche Datei zu bearbeiten.
|
||||
- **Das Löschen hatte diesen Abgleich nicht** — es nahm den Treffer der Ähnlichkeitssuche ohne
|
||||
Gegenprobe und löschte. Bei „VILLAIN" hätte es die Datei von Bad Omens erwischt, unwiderruflich
|
||||
und ohne Hinweis. Jetzt prüft auch `/api/delete-song` die Tags der gefundenen Datei gegen das,
|
||||
was Navidrome für diesen Song meldet, und bricht im Zweifel mit 409 ab. Als letzten Suchschritt
|
||||
bekommt es zusätzlich `findExistingTrack` — der Weg, der bei „K/DA" von sich aus richtig liegt,
|
||||
weil er `/` und `_` beim Vergleich gleich behandelt.
|
||||
- Die Suchhelfer liegen jetzt in [metadata.js](backend/lib/metadata.js) statt im Server, damit sie
|
||||
geprüft werden können: sieben neue Fälle in `backend/test/metadata.test.js` (49 Prüfungen grün).
|
||||
|
||||
### Changed
|
||||
- **Künstlerbilder laden endlich zügig (Web)** — im Künstlerraster lief **pro Künstler ein eigener
|
||||
`getArtistInfo2`-Aufruf**, nur um die Bildadresse zu erfahren. Bei 200 Künstlern sind das 200
|
||||
|
||||
Reference in new issue
Block a user