fix listenbrainz wishlist comp

This commit is contained in:
Broque Thomas 2025-11-25 23:34:56 -08:00
parent e8f9803bd5
commit 28d8dbf5e0
2 changed files with 31 additions and 10 deletions

View file

@ -9373,22 +9373,33 @@ def _ensure_spotify_track_format(track_info):
else:
artists_list.append({'name': 'Unknown Artist'})
# Build album object with images if available
album_data = track_info.get('album', {})
if isinstance(album_data, dict):
album = {
'name': album_data.get('name', 'Unknown Album')
}
# Preserve album images if present (important for ListenBrainz tracks)
if 'images' in album_data:
album['images'] = album_data['images']
else:
album = {
'name': str(album_data) if album_data else 'Unknown Album'
}
# Build proper Spotify track structure
spotify_track = {
'id': track_info.get('id', f"webui_{hash(str(track_info))}"),
'name': track_info.get('name', 'Unknown Track'),
'artists': artists_list, # Proper Spotify format
'album': {
'name': track_info.get('album', {}).get('name') if isinstance(track_info.get('album'), dict)
else track_info.get('album', 'Unknown Album')
},
'album': album,
'duration_ms': track_info.get('duration_ms', 0),
'preview_url': track_info.get('preview_url'),
'external_urls': track_info.get('external_urls', {}),
'popularity': track_info.get('popularity', 0),
'source': 'webui_modal' # Mark as coming from webui
}
return spotify_track
def _process_failed_tracks_to_wishlist_exact(batch_id):
@ -9672,7 +9683,17 @@ def _on_download_completed(batch_id, task_id, success=True):
# Add activity for successful download
track_name = track_info.get('name', 'Unknown Track')
artist_name = track_info.get('artists', [{}])[0].get('name', 'Unknown Artist') if track_info.get('artists') else 'Unknown Artist'
# Safely extract artist name (handle both list and string formats)
artists = track_info.get('artists', [])
if isinstance(artists, list) and len(artists) > 0:
first_artist = artists[0]
artist_name = first_artist.get('name', 'Unknown Artist') if isinstance(first_artist, dict) else str(first_artist)
elif isinstance(artists, str):
artist_name = artists
else:
artist_name = 'Unknown Artist'
add_activity_item("📥", "Download Complete", f"'{track_name}' by {artist_name}", "Now")
# Try to remove from wishlist using track info

View file

@ -28663,12 +28663,12 @@ async function openListenBrainzPlaylist(playlistMbid, playlistName) {
// Convert to Spotify-like format for compatibility with download modal
const spotifyTracks = tracks.map(track => ({
id: track.recording_mbid || '',
id: track.recording_mbid || `listenbrainz_${track.title}_${track.creator}`.replace(/[^a-z0-9]/gi, '_'), // Generate ID if missing
name: track.title || 'Unknown',
artists: [{name: cleanArtistName(track.creator || 'Unknown')}], // Proper Spotify format
album: {
name: track.album || 'Unknown Album',
images: []
images: track.album_cover_url ? [{url: track.album_cover_url}] : []
},
duration_ms: track.duration_ms || 0,
listenbrainz_metadata: track.additional_metadata
@ -30272,7 +30272,7 @@ async function rehydrateDiscoverDownloadModal(playlistId) {
// Convert to Spotify format
const spotifyTracks = tracks.map(track => ({
id: null,
id: track.mbid || `listenbrainz_${track.track_name}_${track.artist_name}`.replace(/[^a-z0-9]/gi, '_'), // Generate ID if missing
name: track.track_name,
artists: [{name: cleanArtistName(track.artist_name)}], // Proper Spotify format
album: {
@ -30345,7 +30345,7 @@ async function rehydrateDiscoverDownloadModal(playlistId) {
id: track.id,
name: track.name,
artists: artistsArray,
album: track.album || 'Unknown Album',
album: track.album || {name: 'Unknown Album', images: []},
duration_ms: track.duration_ms || 0,
external_urls: track.external_urls || {}
};