soulsync/core/repair_jobs
Broque Thomas fe399636b2 Fix Spotify API calls leaking when Deezer/iTunes is primary source
Spotify was being called for album/artist data fetching across multiple
background workers and the Artists page search even when the user had
Deezer or iTunes set as their primary metadata source. Being authenticated
for playlist sync was treated as permission to use Spotify for everything.

- watchlist_scanner: add _spotify_is_primary_source() that checks both
  auth and primary source config; use it for all album/artist data fetching
  (discovery pool, recent album caching, playlist curation, similar artist
  ID matching, proactive ID backfill). _spotify_available_for_run() is kept
  for sync_spotify_library_cache which must run regardless of primary source
- repair_jobs/metadata_gap_filler: gate Spotify ISRC lookup on primary
  source being 'spotify'; MusicBrainz lookup unaffected
- repair_jobs/unknown_artist_fixer: replace hardcoded spotify_client with
  source-aware client selection — primary source ID tried first, each ID
  matched to its correct client (fixes latent bug passing Deezer IDs to
  Spotify)
- web_server.py /api/match/search: Artists page search was hardcoded to
  spotify_client.search_artists(); now uses _get_metadata_fallback_client()
  so results come from the configured primary source
2026-04-15 09:47:43 -07:00
..
__init__.py Add Fix Unknown Artists maintenance job 2026-04-10 12:17:11 -07:00
acoustid_scanner.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
album_completeness.py Share metadata source priority 2026-04-15 07:48:25 +03:00
album_tag_consistency.py Fix Album Tag Consistency job: add missing _get_settings method 2026-03-24 06:38:05 -07:00
base.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
cache_evictor.py Add metadata cache maintenance and health monitoring 2026-03-30 07:40:20 -07:00
dead_file_cleaner.py Fix dead file cleaner false positives from transfer path resolution failure 2026-03-17 09:51:31 -07:00
duplicate_detector.py Fix duplicate detector missing cross-album duplicates (#252) 2026-04-05 18:48:03 -07:00
fake_lossless_detector.py Enrich repair findings with album art, artist images & live job progress 2026-03-15 14:08:26 -07:00
library_reorganize.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
live_commentary_cleaner.py Add acappella to live/commentary cleaner patterns 2026-04-11 13:56:56 -07:00
lossy_converter.py Add independent Blasphemy Mode setting for lossy converter job 2026-03-22 08:08:47 -07:00
mbid_mismatch_detector.py Fix MBID Mismatch Detector comparing MB title against DB title (filename) instead of embedded tag 2026-04-14 12:19:41 -07:00
metadata_gap_filler.py Fix Spotify API calls leaking when Deezer/iTunes is primary source 2026-04-15 09:47:43 -07:00
missing_cover_art.py Fix enrichment retry loops, cover art finding dupes, and Spotify rate limit during art scan 2026-03-22 23:24:42 -07:00
orphan_file_detector.py Fix dismissed findings reappearing and reduce false orphan detections 2026-04-10 17:42:39 -07:00
single_album_dedup.py Fix bulk Fix All ignoring Single/Album Dedup findings and expand version keywords 2026-03-19 08:53:14 -07:00
track_number_repair.py Fix Track Number Repair findings returning 400 on fix 2026-03-19 19:21:24 -07:00
unknown_artist_fixer.py Fix Spotify API calls leaking when Deezer/iTunes is primary source 2026-04-15 09:47:43 -07:00