From 60988c224d0687ad7f2c02294e9c98e7581ab7a0 Mon Sep 17 00:00:00 2001 From: Elmar Kresse Date: Sun, 12 Oct 2025 23:30:45 +0200 Subject: [PATCH] fix: correct year and date for "Heimweh" by Freddy Quinn and clarify metadata handling in track processing --- data/hitster_default/years.json | 4 ++-- src/server/game/deck.js | 5 +++-- src/server/tracks.js | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/data/hitster_default/years.json b/data/hitster_default/years.json index 96c81de..019153e 100644 --- a/data/hitster_default/years.json +++ b/data/hitster_default/years.json @@ -745,8 +745,8 @@ "mbid": null }, "Freddy Quinn - Heimweh (Dort wo die Blumen blüh'n).opus": { - "year": 2006, - "date": "2006-10-26", + "year": 1956, + "date": "1956", "title": "Heimweh (Dort wo die Blumen blüh'n)", "artist": "Freddy Quinn", "mbid": "2e4c3d92-9103-48ee-9399-43d83a61872f" diff --git a/src/server/game/deck.js b/src/server/game/deck.js index 2abea24..4784d89 100644 --- a/src/server/game/deck.js +++ b/src/server/game/deck.js @@ -91,13 +91,14 @@ export async function loadDeck(playlistId = 'default') { let title = jsonMeta?.title ?? path.parse(f).name; let artist = jsonMeta?.artist ?? ''; - // Only parse audio file if JSON doesn't have complete metadata + // Only parse audio file if JSON doesn't have title or artist metadata + // Note: year is ONLY taken from years.json, never from audio file if (!jsonMeta || !jsonMeta.title || !jsonMeta.artist) { try { const meta = await mmParseFile(fp, { duration: false }); title = jsonMeta?.title || meta.common.title || title; artist = jsonMeta?.artist || meta.common.artist || artist; - year = jsonMeta?.year ?? meta.common.year ?? year; + // year remains from years.json only - do not use meta.common.year } catch (err) { // Log error but continue processing console.warn(`Failed to parse metadata for ${f}:`, err.message); diff --git a/src/server/tracks.js b/src/server/tracks.js index fd0e058..e8a3408 100644 --- a/src/server/tracks.js +++ b/src/server/tracks.js @@ -37,13 +37,14 @@ export async function listTracks(playlistId = 'default') { let title = jsonMeta?.title ?? path.parse(f).name; let artist = jsonMeta?.artist ?? ''; - // Only parse audio file if JSON doesn't have complete metadata + // Only parse audio file if JSON doesn't have title or artist metadata + // Note: year is ONLY taken from years.json, never from audio file if (!jsonMeta || !jsonMeta.title || !jsonMeta.artist) { try { const meta = await mmParseFile(fp, { duration: false }); title = jsonMeta?.title || meta.common.title || title; artist = jsonMeta?.artist || meta.common.artist || artist; - year = jsonMeta?.year ?? meta.common.year ?? year; + // year remains from years.json only - do not use meta.common.year } catch {} }