Fix Watch All Unwatched ignoring Deezer artist IDs
The bulk watchlist add had no Deezer ID support — artists with only a deezer_id were silently skipped (artist_id stayed None). Also fixed the source detection to use the actual ID field picked instead of a numeric heuristic that could assign Deezer IDs to the wrong service column. Fallback chain is now: active source first, then Spotify → iTunes → Deezer.
This commit is contained in:
parent
98463e5d43
commit
56305615a4
2 changed files with 23 additions and 6 deletions
|
|
@ -18999,6 +18999,15 @@ def get_version_info():
|
|||
"title": "What's New in SoulSync",
|
||||
"subtitle": f"Version {SOULSYNC_VERSION} — Latest Changes",
|
||||
"sections": [
|
||||
{
|
||||
"title": "🔧 Fix Watch All Unwatched Skipping Deezer Artists",
|
||||
"description": "Watch All Unwatched now supports Deezer as an ID source",
|
||||
"features": [
|
||||
"• Added Deezer ID support to the bulk watchlist add flow",
|
||||
"• Source detection based on actual ID field used instead of numeric heuristic",
|
||||
"• Fallback chain: active source first, then Spotify, iTunes, Deezer"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "🔧 Fix Library Maintenance Path Fixes Failing Silently",
|
||||
"description": "Path mismatch fixes now use fresh config and report errors to the UI",
|
||||
|
|
@ -34257,11 +34266,14 @@ def watchlist_all_unwatched_library_artists():
|
|||
artist_id = None
|
||||
if active_source == 'spotify' and artist.get('spotify_artist_id'):
|
||||
artist_id = artist['spotify_artist_id']
|
||||
elif active_source == 'deezer' and artist.get('deezer_id'):
|
||||
artist_id = artist['deezer_id']
|
||||
elif artist.get('spotify_artist_id'):
|
||||
artist_id = artist['spotify_artist_id']
|
||||
elif artist.get('itunes_artist_id'):
|
||||
artist_id = artist['itunes_artist_id']
|
||||
elif artist.get('spotify_artist_id'):
|
||||
# Fallback: use spotify if itunes not available
|
||||
artist_id = artist['spotify_artist_id']
|
||||
elif artist.get('deezer_id'):
|
||||
artist_id = artist['deezer_id']
|
||||
|
||||
if not artist_id:
|
||||
skipped_no_id += 1
|
||||
|
|
@ -34276,9 +34288,13 @@ def watchlist_all_unwatched_library_artists():
|
|||
skipped_already += 1
|
||||
continue
|
||||
|
||||
is_numeric = artist_id.isdigit()
|
||||
fb_source = _get_metadata_fallback_source()
|
||||
src = fb_source if is_numeric else 'spotify'
|
||||
# Determine source based on which ID field we picked
|
||||
if artist_id == artist.get('spotify_artist_id'):
|
||||
src = 'spotify'
|
||||
elif artist_id == artist.get('deezer_id'):
|
||||
src = 'deezer'
|
||||
else:
|
||||
src = _get_metadata_fallback_source()
|
||||
success = database.add_artist_to_watchlist(artist_id, artist_name, profile_id=get_current_profile_id(), source=src)
|
||||
if success:
|
||||
added += 1
|
||||
|
|
|
|||
|
|
@ -3403,6 +3403,7 @@ function closeHelperSearch() {
|
|||
const WHATS_NEW = {
|
||||
'2.1': [
|
||||
// Newest features first
|
||||
{ title: 'Fix Watch All Unwatched', desc: 'Watch All Unwatched now works for Deezer users — was silently skipping artists with only Deezer IDs' },
|
||||
{ title: 'Fix Path Mismatch Fixes', desc: 'Library Maintenance path fixes now use fresh config and show error reasons in the toast' },
|
||||
{ title: 'Fix Wrong Spotify IDs', desc: 'Manual match no longer stores iTunes IDs as Spotify IDs — detects actual provider from results' },
|
||||
{ title: 'Spotify Enrichment Budget', desc: 'Background enrichment worker caps at 3,000 items/day to prevent rate limit bans — resets at midnight' },
|
||||
|
|
|
|||
Loading…
Reference in a new issue