fix(docs+web): "NN-NN im Dateinamen" war kein Bug — Navidromes fakePath

Der Pfad Rising Insane/DEATHRACE/01-02 - DEATHRACE.mp3 existiert so nicht
auf der Platte. Navidrome gibt über Subsonic standardmäßig nicht den
echten Pfad heraus, sondern baut ihn per fakePath() aus den Tags:
{AlbumArtist}/{Album}/{DD}-{TT} - {Titel}.{ext} — 01 ist die Disc, 02 die
Tracknummer. An der Künstlerstelle steht also kein kaputter Wert, dort
steht gar kein Künstler.

Known-Bug-Eintrag entsprechend widerlegt statt gelöscht, samt Hinweis auf
"Report Real Path" am Player novasonic — das ist die Wurzel der
Datei-Ratearbeit im Backend und damit auch des Fehlers "Metadaten springen
zurück". Das Backend nimmt einen absoluten Pfad bereits ohne Änderung.

Info-Dialog beschriftet das Feld jetzt als "Pfad (Navidrome)".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-11 23:56:15 +02:00
1 parent ac69d259d5
commit 4ee20de359
2 files changed
+21 -17

No files matched your search

+17 -16
View File
@@ -826,22 +826,23 @@ Polish release: Android navigation and offline resilience, download accuracy for
und ignoriert Akzente sowie Apostrophe (2.3). Ein Rest bleibt: steht derselbe Song unter einem
**deutlich anderen** Künstlernamen (etwa vor einer Namenskorrektur), wird er weiterhin nicht
erkannt und erneut geladen.
- **Backend (Dateinamen)** — Statt `{Tracknummer} - {Künstler} - {Titel}` entsteht gelegentlich
ein Name der Form `NN-NN - {Titel}`, etwa
`Rising Insane/DEATHRACE/01-02 - DEATHRACE.mp3`: an der Stelle des **Künstlers** steht `01-02`,
und die Tracknummer fehlt ganz. Der Ordner (`Künstler/Album`) stimmt dabei, es betrifft nur den
Dateinamen. Gebaut wird er in [ytdlp.js](../backend/lib/ytdlp.js) als
`fileBase = {trackPrefix}{artist} - {title}` — das `01-02` muss also im **Künstlerfeld** der
Quelle gestanden haben; `trackPrefix` kann diese Form gar nicht erzeugen (`padStart(2,'0')` auf
eine Zahl). Dieselbe Form ist als Testfall festgehalten
(`01-01 - Kingdom Hearts 2 - …`, [metadata.test.js:20](../backend/test/metadata.test.js)), dort
ausdrücklich als „garbage artist prefix" — die Dublettenprüfung kommt damit zurecht, der
Dateiname bleibt aber falsch.
Nächster Schritt zur Eingrenzung: Tags der betroffenen Datei auslesen (`ffprobe -show_format`) und
klären, über welchen Weg sie kam (Album-Download, Einzeltrack oder Importer) — daraus ergibt sich,
welche Quelle das Künstlerfeld mit `NN-NN` füllt. Sinnvolle Absicherung unabhängig davon: einen
Künstlernamen, der nur aus Ziffern und Bindestrichen besteht, verwerfen und auf den Album-Künstler
zurückfallen, statt ihn in den Dateinamen zu übernehmen.
- ~~**Backend (Dateinamen)** — `NN-NN - {Titel}` statt `{Tracknummer} - {Künstler} - {Titel}`~~
**Kein Bug — am 11.9.2026 widerlegt.** Der Pfad `Rising Insane/DEATHRACE/01-02 - DEATHRACE.mp3`
steht so **nirgends auf der Platte**. Navidrome gibt über die Subsonic-API standardmäßig gar nicht
den echten Pfad heraus, sondern baut einen aus den Tags zusammen
([`fakePath()` in `server/subsonic/helpers.go`](https://github.com/navidrome/navidrome/blob/master/server/subsonic/helpers.go)):
`{AlbumArtist}/{Album}/{DD}-{TT} - {Titel}.{Endung}` — `01` ist die **Disc**, `02` die
**Tracknummer**. An der Stelle des Künstlers steht also nichts Kaputtes, dort steht überhaupt kein
Künstler. Der Info-Dialog zeigte diesen Pfad nur unbeschriftet als „Pfad" an (`s.path` aus
`getSong`), was wie ein falscher Dateiname aussah.
**Folge fürs Backend:** dass Navidrome den echten Pfad verschweigt, ist die Wurzel der ganzen
Datei-Ratearbeit in `metadata.js` — und damit auch der „Metadaten springen zurück"-Fehler (2.3),
bei dem die Suche nach Ähnlichkeit die falsche Kopie traf. Navidrome hat dafür einen Schalter:
**Einstellungen → Players → Zeile `novasonic` → „Report Real Path"**. Ist er an, liefert `getSong`
den echten absoluten Pfad; das Backend nimmt den bereits ohne Codeänderung direkt
([novasonic-server.js:1638](../backend/novasonic-server.js)), und das Raten entfällt. Es gibt zwei
Player-Zeilen, weil Web/Android als `NovaSonic` und das Backend als `novasonic` anfragen —
entscheidend ist die des **Backends**.
- **Backend (download)** — Der Variantenfilter nutzt `\b`-Wortgrenzen, und die zählen den Unterstrich
als Wortzeichen. Titel wie `song_instrumental_cover` oder `Easy_live` rutschen deshalb durch,
während `Easy (Instrumental)` korrekt abgewiesen wird.
+4 -1
View File
@@ -38,7 +38,10 @@ function _renderInfoModal(s) {
['Bitrate', s.bitRate ? s.bitRate+' kbps' : null],
['Format', s.suffix?.toUpperCase()],
['Dateigröße', s.size ? Math.round(s.size/1024/1024*10)/10+' MB' : null],
['Pfad', s.path],
// Navidrome gibt den echten Pfad nur heraus, wenn beim Player "Report Real Path" gesetzt ist;
// sonst baut es ihn per fakePath() aus den Tags: AlbumArtist/Album/DD-TT - Titel.ext. Das sah
// unbeschriftet nach einem kaputten Dateinamen aus, deshalb die Quellenangabe im Label.
['Pfad (Navidrome)', s.path],
['Plays', s.playCount],
].filter(([,v]) => v!=null && v!=='' && v!==undefined);
document.getElementById('info-rows').innerHTML = fields.map(([l,v]) =>