fix: improve Spotify importer metadata — copy iTunes durationMs, skip redundant backend lookup when frontend already enriched track

This commit is contained in:
Honey committed 2026-05-14 17:58:36 +02:00
1 parent e78df7bdb9
commit 11dec04fea
2 files changed
+11 -1

No files matched your search

+10 -1
View File
@@ -276,9 +276,18 @@ app.post('/api/download', async (req, res) => {
const batchResults = await Promise.allSettled(batch.map(async track => { const batchResults = await Promise.allSettled(batch.map(async track => {
const trackTitle = track.trackName || ''; const trackTitle = track.trackName || '';
const trackArtist = track.artistName || artist || ''; const trackArtist = track.artistName || artist || '';
// If the frontend already enriched this track with iTunes data (collectionName +
// trackNumber + durationMs all present), skip the re-lookup to avoid a different
// iTunes result overriding the already-correct enriched metadata.
const alreadyEnriched = !!(track.collectionName && track.trackNumber && track.durationMs);
let itunes = {};
if (alreadyEnriched) {
log(jobId, `📋 Frontend-Metadaten: "${trackArtist} – ${trackTitle}" (${track.collectionName})`);
} else {
const searchArtist = trackArtist.split(',')[0].trim(); const searchArtist = trackArtist.split(',')[0].trim();
log(jobId, `📋 iTunes: "${trackArtist} – ${trackTitle}"`); log(jobId, `📋 iTunes: "${trackArtist} – ${trackTitle}"`);
const itunes = await lookupItunesTrackMeta(searchArtist, trackTitle); itunes = await lookupItunesTrackMeta(searchArtist, trackTitle);
}
return downloadTrack({ return downloadTrack({
jobId, jobId,
artist: trackArtist, artist: trackArtist,
+1
View File
@@ -219,6 +219,7 @@ async function _loadSpotifyTrackArtwork(tracks, listEl) {
if (match.trackNumber) t.trackNumber = match.trackNumber; if (match.trackNumber) t.trackNumber = match.trackNumber;
if (match.trackExplicitness) t.trackExplicitness = match.trackExplicitness; if (match.trackExplicitness) t.trackExplicitness = match.trackExplicitness;
if (match.previewUrl) t.previewUrl = match.previewUrl; if (match.previewUrl) t.previewUrl = match.previewUrl;
if (match.trackTimeMillis) t.durationMs = match.trackTimeMillis;
if (window._spotifyResolved?.tracks?.[idx]) Object.assign(window._spotifyResolved.tracks[idx], t); if (window._spotifyResolved?.tracks?.[idx]) Object.assign(window._spotifyResolved.tracks[idx], t);
const url = match.artworkUrl100 || match.artworkUrl60 || ''; const url = match.artworkUrl100 || match.artworkUrl60 || '';
if (url) _setArt(artEls[idx], url); if (url) _setArt(artEls[idx], url);