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:
1 parent
ac69d259d5
commit
4ee20de359
2 files changed
+21
-17
No files matched your search
+17
-16
@@ -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
@@ -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]) =>
|
||||
|
||||
Reference in new issue
Block a user