diff --git a/web_server.py b/web_server.py index 2ad69cbf..04b8ea66 100644 --- a/web_server.py +++ b/web_server.py @@ -25743,8 +25743,13 @@ def _run_tidal_discovery_worker(playlist_id): # Spotify: Function returns (Track, raw_data, confidence) track_obj, raw_track_data, match_confidence = track_result album_obj = raw_track_data.get('album', {}) if raw_track_data else {} + # Ensure album has a name — fall back to track_obj.album if raw_data was missing + if isinstance(album_obj, dict) and not album_obj.get('name') and track_obj.album: + album_obj['name'] = track_obj.album + elif not album_obj and track_obj.album: + album_obj = {'name': track_obj.album} # Extract image URL from album data or track object - _album_images = album_obj.get('images', []) + _album_images = album_obj.get('images', []) if isinstance(album_obj, dict) else [] _image_url = _album_images[0].get('url', '') if _album_images else (getattr(track_obj, 'image_url', '') or '') match_data = { @@ -26700,8 +26705,13 @@ def _run_deezer_discovery_worker(playlist_id): # Spotify: Function returns (Track, raw_data, confidence) track_obj, raw_track_data, match_confidence = track_result album_obj = raw_track_data.get('album', {}) if raw_track_data else {} + # Ensure album has a name — fall back to track_obj.album if raw_data was missing + if isinstance(album_obj, dict) and not album_obj.get('name') and track_obj.album: + album_obj['name'] = track_obj.album + elif not album_obj and track_obj.album: + album_obj = {'name': track_obj.album} # Extract image URL from album data or track object - _album_images = album_obj.get('images', []) + _album_images = album_obj.get('images', []) if isinstance(album_obj, dict) else [] _image_url = _album_images[0].get('url', '') if _album_images else (getattr(track_obj, 'image_url', '') or '') match_data = { @@ -27519,8 +27529,13 @@ def _run_spotify_public_discovery_worker(url_hash): # Spotify: Function returns (Track, raw_data, confidence) track_obj, raw_track_data, match_confidence = track_result album_obj = raw_track_data.get('album', {}) if raw_track_data else {} + # Ensure album has a name — fall back to track_obj.album if raw_data was missing + if isinstance(album_obj, dict) and not album_obj.get('name') and track_obj.album: + album_obj['name'] = track_obj.album + elif not album_obj and track_obj.album: + album_obj = {'name': track_obj.album} # Extract image URL from album data or track object - _album_images = album_obj.get('images', []) + _album_images = album_obj.get('images', []) if isinstance(album_obj, dict) else [] _image_url = _album_images[0].get('url', '') if _album_images else (getattr(track_obj, 'image_url', '') or '') match_data = { diff --git a/webui/static/script.js b/webui/static/script.js index 4cd3a3ba..7e9e75fc 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -11076,7 +11076,8 @@ async function selectWishlistCategory(category) { } } - const albumName = spotifyData?.album?.name || 'Unknown Album'; + const rawAlbum = spotifyData?.album; + const albumName = (typeof rawAlbum === 'string' ? rawAlbum : rawAlbum?.name) || 'Unknown Album'; // Handle both object format {name: '...'} and sanitized string format let artistName = 'Unknown Artist';