diff --git a/backend/novasonic-server.js b/backend/novasonic-server.js index 58c98eb..986d491 100644 --- a/backend/novasonic-server.js +++ b/backend/novasonic-server.js @@ -108,7 +108,7 @@ async function downloadArtwork(url, dir) { } // Download a single track: yt-dlp audio + ffmpeg clean metadata + iTunes cover embedded -async function downloadTrack({ jobId, artist, albumArtist, title, album, year, trackNum, totalTracks, artworkUrl, outputDir }) { +async function downloadTrack({ jobId, artist, albumArtist, title, album, year, trackNum, totalTracks, genre, artworkUrl, outputDir }) { const mainArtist = albumArtist || artist; const safeArtist = sanitize(mainArtist); const safeAlbum = sanitize(album || 'Singles'); @@ -196,6 +196,7 @@ async function downloadTrack({ jobId, artist, albumArtist, title, album, year, t if (year) ffArgs.push('-metadata', `date=${String(year)}`); if (trackNum) ffArgs.push('-metadata', `track=${totalTracks ? `${trackNum}/${totalTracks}` : String(trackNum)}`); if (totalTracks) ffArgs.push('-metadata', `totaltracks=${String(totalTracks)}`); + if (genre) ffArgs.push('-metadata', `genre=${genre}`); if (hasCover) { ffArgs.push( '-metadata:s:v', 'title=Album cover', @@ -239,8 +240,9 @@ async function downloadAlbumTracks({ jobId, artist, albumTitle, tracks, artworkU title: track.trackName || track.title, album: albumTitle, year: track.releaseDate ? new Date(track.releaseDate).getFullYear() : undefined, - trackNum: track.trackNumber || undefined, + trackNum: track.trackNumber || undefined, totalTracks: total, + genre: track.primaryGenreName || undefined, artworkUrl: artworkUrl || track.artworkUrl100, outputDir: CONFIG.musicPath, });