Improve wishlist track sorting robustness

Refactored the sorting logic to handle cases where 'spotify_data' may be a JSON string or have varying structures. This ensures consistent sorting by artist and track name, even with malformed or unexpected data formats.
pull/97/head
Broque Thomas 5 months ago
parent b50f6c8d9f
commit 3c7659feac

@ -110,10 +110,31 @@ class WishlistService:
# Sort by artist name, then track name for consistent display order
try:
wishlist_tracks.sort(key=lambda x: (
x['spotify_data'].get('artists', [{}])[0].get('name', '').lower(),
x['spotify_data'].get('name', '').lower()
))
def get_sort_key(track):
spotify_data = track['spotify_data']
# Parse JSON string if needed
if isinstance(spotify_data, str):
import json
try:
spotify_data = json.loads(spotify_data)
except:
return ('', '') # Fallback for invalid JSON
artist_name = ''
track_name = ''
if isinstance(spotify_data, dict):
artists = spotify_data.get('artists', [])
if artists and len(artists) > 0:
if isinstance(artists[0], dict):
artist_name = artists[0].get('name', '')
elif isinstance(artists[0], str):
artist_name = artists[0]
track_name = spotify_data.get('name', '')
return (artist_name.lower(), track_name.lower())
wishlist_tracks.sort(key=get_sort_key)
logger.debug(f"Successfully sorted {len(wishlist_tracks)} wishlist tracks by artist/track name")
except Exception as sort_error:
logger.warning(f"Failed to sort wishlist tracks, using original order: {sort_error}")

Loading…
Cancel
Save