fix: improve Spotify importer metadata — copy iTunes durationMs, skip redundant backend lookup when frontend already enriched track
This commit is contained in:
1 parent
e78df7bdb9
commit
11dec04fea
2 files changed
+11
-1
No files matched your search
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in new issue
Block a user