From 1384b966e88045512f33fe21af5eb391645ea000 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Fri, 17 Apr 2026 14:01:56 -0700 Subject: [PATCH] Fix Unknown Artist when adding playlist tracks to wishlist When adding tracks to wishlist from a playlist download modal, process.artist was undefined (only set for album downloads) and defaulted to {name: 'Unknown Artist'}. This got stored in source_info.artist_name and was prioritized over the track's own artist data during wishlist download post-processing. Now resolves the artist per-track from the track's own artists array, falling back to the process-level artist only for album downloads where it's actually set correctly. --- webui/static/script.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/webui/static/script.js b/webui/static/script.js index 4433e5e0..e14e195e 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -19891,11 +19891,13 @@ async function addModalTracksToWishlist(playlistId) { } } - // Get artist/album context if available (for artist album downloads) - const artist = process.artist || { name: 'Unknown Artist', id: null }; + // Get album context if available (for artist album downloads) + // Artist is resolved per-track below — process.artist is only set for album downloads, + // not for playlists, so we must NOT use it as a blanket default. + const processArtist = process.artist || null; const album = process.album || process.playlist || { name: 'Playlist', id: playlistId }; - console.log(`🔄 Adding ${tracks.length} tracks from "${album.name}" to wishlist`); + console.log(`🔄 Adding ${tracks.length} tracks from "${album.name}" to wishlist (process artist: ${processArtist?.name || 'per-track'})`); // Disable the button to prevent double-clicks const wishlistBtn = document.getElementById(`add-to-wishlist-btn-${playlistId}`); @@ -19966,6 +19968,16 @@ async function addModalTracksToWishlist(playlistId) { trackAlbumType = 'album'; } + // Resolve artist per-track: prefer track's own artists over process-level + let trackArtist; + if (formattedArtists.length > 0 && formattedArtists[0].name && formattedArtists[0].name !== 'Unknown Artist') { + trackArtist = formattedArtists[0]; + } else if (processArtist && processArtist.name) { + trackArtist = processArtist; + } else { + trackArtist = { name: 'Unknown Artist', id: null }; + } + const response = await fetch('/api/add-album-to-wishlist', { method: 'POST', headers: { @@ -19973,12 +19985,12 @@ async function addModalTracksToWishlist(playlistId) { }, body: JSON.stringify({ track: formattedTrack, - artist: artist, + artist: trackArtist, album: trackAlbum, source_type: 'album', source_context: { album_name: trackAlbum.name, - artist_name: artist.name, + artist_name: trackArtist.name, album_type: trackAlbumType } })