soulsync/core
Broque Thomas 2003e58358 Add Spotify rate limit guards to all repair jobs
Repair jobs were making Spotify API calls without checking the global
rate limit ban, causing them to churn through every item getting rejected
one by one during a ban. Now all Spotify calls in repair jobs check
context.is_spotify_rate_limited() first and skip/fallback gracefully.

- Add is_spotify_rate_limited() helper to JobContext (base.py)
- Guard calls in track_number_repair, album_completeness,
  missing_cover_art, and metadata_gap_filler
- Jobs fall through to iTunes/MusicBrainz fallbacks when rate-limited
2026-03-15 16:01:48 -07:00
..
repair_jobs Add Spotify rate limit guards to all repair jobs 2026-03-15 16:01:48 -07:00
acoustid_client.py Fix chromaprint C-level assertion crash on 5.1 surround FLAC files. Not possible to check 2026-03-04 10:51:01 -08:00
acoustid_verification.py Strip all parentheticals in AcoustID title normalization 2026-03-13 21:28:18 -07:00
audiodb_client.py Add AudioDB enrichment for artists, albums, and tracks 2026-02-18 14:08:01 -08:00
audiodb_worker.py Retry errored items and prevent incomplete Deezer matches 2026-02-18 20:04:58 -08:00
automation_engine.py Scope automation-triggered watchlist scans to the calling profile & Fix watchlist scan silently skipping all albums due to metadata cache returning incomplete data 2026-03-14 13:23:03 -07:00
database_update_worker.py Fix automated scans for non-Plex servers & incremental scan performance 2026-03-12 11:17:32 -07:00
deezer_client.py Add Deezer playlist sync tab with discovery, fix modal, and cache persistence 2026-03-13 12:29:49 -07:00
deezer_worker.py Retry errored items and prevent incomplete Deezer matches 2026-02-18 20:04:58 -08:00
download_orchestrator.py Hybrid Mode Redesign 2026-03-11 18:10:35 -07:00
genius_client.py Fix Genius 429 backoff by re-raising rate limit errors from _make_request 2026-03-10 15:46:37 -07:00
genius_worker.py Last.fm & Genius full worker parity, clickable service badges, and playlist folder race condition fix 2026-03-10 10:35:55 -07:00
hydrabase_client.py hydrabase changes 2026-03-04 19:48:12 -08:00
hydrabase_worker.py Use nonces and drain interleaved stats in Hydrabase 2026-02-24 19:16:14 -08:00
itunes_client.py Harden metadata cache: prevent simplified data from overwriting full entries, fix connection leaks, and add inline TTL enforcement 2026-03-14 13:39:12 -07:00
itunes_worker.py Add Spotify & iTunes workers; update repair worker 2026-02-22 22:29:10 -08:00
jellyfin_client.py Add file path and bitrate support for Jellyfin tracks 2026-03-08 13:08:26 -07:00
lastfm_client.py Add Last.fm and Genius to on-demand enrichment, settings reload, and enrich dropdown parity 2026-03-10 09:12:36 -07:00
lastfm_worker.py Add no-auth state to Last.fm and Genius dashboard buttons with greyed-out UI and settings guidance 2026-03-10 09:20:16 -07:00
listenbrainz_client.py Add per-profile ListenBrainz support with personal settings modal 2026-03-14 20:12:19 -07:00
listenbrainz_manager.py Fix per-profile ListenBrainz playlist cache scoping and stale data recovery 2026-03-14 21:11:59 -07:00
lyrics_client.py auto lyric download 2025-09-22 16:04:06 -07:00
matching_engine.py Fix wrong track downloads when album name matches a track title in hybrid mode 2026-03-12 10:40:33 -07:00
media_scan_manager.py Fix automated scans for non-Plex servers & incremental scan performance 2026-03-12 11:17:32 -07:00
metadata_cache.py Harden metadata cache: prevent simplified data from overwriting full entries, fix connection leaks, and add inline TTL enforcement 2026-03-14 13:39:12 -07:00
metadata_service.py Discover page itunes integration. Spotify and Itunes will have their own pool 2026-01-23 23:05:58 -08:00
musicbrainz_client.py feat(ui): add MusicBrainz enrichment status UI with real-time monitoring 2026-02-03 15:20:04 -08:00
musicbrainz_service.py feat: embed MusicBrainz, Spotify/iTunes IDs, ISRC, and merged genres into audio file tags 2026-02-05 21:26:19 -08:00
musicbrainz_worker.py Retry errored items and prevent incomplete Deezer matches 2026-02-18 20:04:58 -08:00
navidrome_client.py Detect and remove deleted content during incremental database updates 2026-03-03 13:13:38 -08:00
personalized_playlists.py fix build a playlist functionality and update the ui 2026-03-11 07:52:58 -07:00
plex_client.py Detect and remove deleted content during incremental database updates 2026-03-03 13:13:38 -08:00
plex_scan_manager.py fix logging issue 2025-08-09 13:17:11 -07:00
qobuz_client.py Tidal & Qobuz Background Enrichment Workers 2026-03-11 21:26:20 -07:00
qobuz_worker.py Fix Tidal/Qobuz enrichment backfill failing on dict-type copyright and isrc fields 2026-03-12 10:26:35 -07:00
repair_worker.py Enrich repair findings with album art, artist images & live job progress 2026-03-15 14:08:26 -07:00
seasonal_discovery.py Fix iTunes discovery playlists: synthetic popularity, EP inclusion, and seasonal iTunes support 2026-03-13 13:52:32 -07:00
soulseek_client.py Fix cancel all downloads using non-existent slskd bulk endpoint 2026-02-27 17:59:35 -08:00
spotify_client.py Fix watchlist scan failing entirely when Spotify is rate limited by adding iTunes provider fallback and missing rate limit ban detection 2026-03-14 14:58:12 -07:00
spotify_worker.py Stop unnecessary Spotify API call every 60s from enrichment status polling 2026-03-12 12:06:25 -07:00
tag_writer.py Fix false positive track matching & tag writing visibility for library files 2026-03-12 16:08:44 -07:00
tidal_client.py Fix Tidal playlist sync dropping remix/version info from track titles 2026-03-12 21:12:34 -07:00
tidal_download_client.py Retry Tidal download at lower quality when hi-res returns garbage file 2026-03-14 10:54:33 -07:00
tidal_worker.py Fix Tidal/Qobuz enrichment backfill failing on dict-type copyright and isrc fields 2026-03-12 10:26:35 -07:00
watchlist_scanner.py Fix watchlist scan failing entirely when Spotify is rate limited by adding iTunes provider fallback and missing rate limit ban detection 2026-03-14 14:58:12 -07:00
web_scan_manager.py Fix automated scans for non-Plex servers & incremental scan performance 2026-03-12 11:17:32 -07:00
wishlist_service.py Add multi-profile support with Netflix-style profile picker 2026-03-04 10:46:08 -08:00
youtube_client.py User configurable youtube rate limiting and optional cookies for bot detection 2026-03-05 10:50:06 -08:00