fix(spotify): iTunes lookup per track in playlist downloads
Spotify's flat embed format provides no album, year or per-track artwork. Now calls lookupItunesTrackMeta for every playlist track before downloading: - Uses first artist of "Artist1, Artist2" subtitle for iTunes search query (better match), keeps full string as the MP3 tag - iTunes album/year/trackNum/artwork override the empty Spotify fields - Falls back to Spotify data if iTunes returns nothing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
5446d83ab3
commit
16cf49638f
1 file changed
+18
-8
@@ -648,16 +648,26 @@ app.post('/api/download', async (req, res) => {
|
||||
let done = 0, skipped = 0;
|
||||
for (const track of plTracks) {
|
||||
try {
|
||||
const trackTitle = track.trackName || '';
|
||||
// subtitle gives "Artist1, Artist2" — use first for iTunes search, keep full for tags
|
||||
const trackArtist = track.artistName || artist || '';
|
||||
const searchArtist = trackArtist.split(',')[0].trim();
|
||||
|
||||
// Always look up iTunes for correct album, artwork, year (Spotify flat format has none)
|
||||
log(jobId, `📋 iTunes: "${trackArtist} – ${trackTitle}"`);
|
||||
const itunes = await lookupItunesTrackMeta(searchArtist, trackTitle);
|
||||
|
||||
const result = await downloadTrack({
|
||||
jobId,
|
||||
artist: track.artistName || artist || '',
|
||||
albumArtist: track.artistName || artist || '',
|
||||
title: track.trackName || '',
|
||||
album: track.collectionName || '',
|
||||
year: track.releaseDate ? new Date(track.releaseDate).getFullYear() : undefined,
|
||||
trackNum: track.trackNumber || undefined,
|
||||
genre: track.primaryGenreName || undefined,
|
||||
artworkUrl: track.artworkUrl100 || artworkUrl || '',
|
||||
artist: trackArtist,
|
||||
albumArtist: trackArtist,
|
||||
title: trackTitle,
|
||||
album: itunes.album || track.collectionName || '',
|
||||
year: itunes.year || (track.releaseDate ? new Date(track.releaseDate).getFullYear() : undefined),
|
||||
trackNum: itunes.trackNum || track.trackNumber || undefined,
|
||||
totalTracks: itunes.totalTracks || undefined,
|
||||
genre: itunes.genre || track.primaryGenreName || undefined,
|
||||
artworkUrl: itunes.artworkUrl || track.artworkUrl100 || '',
|
||||
explicit: track.trackExplicitness === 'explicit',
|
||||
});
|
||||
if (result?.skipped) skipped++; else done++;
|
||||
|
||||
Reference in new issue
Block a user