soulsync/core
JohnBaumb f4c8c231a7 fix: stop enrichment workers from re-processing rows forever
Four enrichment workers (Last.fm, MusicBrainz, Tidal, Qobuz) had a

bug where every background loop re-processed the same rows because

the existing-ID short-circuit path never set match_status, and two

workers queried the wrong column when checking for an existing ID.

lastfm_worker._get_existing_id queried a non-existent lastfm_id

column; the real column is lastfm_url. The method now reads

lastfm_url for all three entity types.

musicbrainz_worker._get_existing_id queried musicbrainz_id for all

entity types, but albums use musicbrainz_release_id and tracks use

musicbrainz_recording_id. The method now uses a per-type column map.

All four workers (lastfm, musicbrainz, tidal, qobuz) now write

match_status='matched' when they short-circuit on an already-present

external ID, so these rows are no longer re-selected on the next

worker sweep.

A new migration (_backfill_match_status_for_existing_ids) runs once

on startup to retroactively set match_status='matched' for rows that

already have an external ID but NULL match_status. This covers legacy

data, manual matches, and rows populated from file tags outside the

worker.
2026-04-19 15:22:24 -07:00
..
repair_jobs Fix Duplicate Detector ignoring 'allow duplicate tracks across albums' 2026-04-18 18:55:02 -07:00
acoustid_client.py Fix AcoustID test connection falsely failing for valid API keys 2026-04-13 09:37:50 -07:00
acoustid_verification.py
album_consistency.py Picard-style release preference scoring for MusicBrainz matching 2026-04-16 13:29:04 -07:00
api_call_tracker.py
audiodb_client.py
audiodb_worker.py Add genre whitelist for filtering junk tags during enrichment 2026-04-18 20:23:53 -07:00
auto_import_worker.py Fix single import: prefer tag data over weak metadata/AcoustID matches 2026-04-17 23:18:03 -07:00
automation_engine.py
database_update_worker.py More dead code removal after desktop app removal 2026-04-17 20:06:24 +03:00
deezer_client.py Fix playlist cover art not syncing to Plex/Jellyfin from Deezer and other sources 2026-04-15 10:25:38 -07:00
deezer_download_client.py Add Your Albums — multi-source liked albums pool (Spotify, Tidal, Deezer) 2026-04-13 23:02:37 -07:00
deezer_worker.py Add genre whitelist for filtering junk tags during enrichment 2026-04-18 20:23:53 -07:00
discogs_client.py
discogs_worker.py Add genre whitelist for filtering junk tags during enrichment 2026-04-18 20:23:53 -07:00
download_orchestrator.py Add first-run setup wizard and fix download path reloading 2026-04-11 22:45:16 -07:00
genius_client.py
genius_worker.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
genre_filter.py Expand default genre whitelist from 223 to 272 genres 2026-04-18 20:32:49 -07:00
hifi_client.py
hydrabase_client.py
hydrabase_worker.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
itunes_client.py Upgrade artwork to highest available resolution for Spotify and iTunes 2026-04-13 15:04:37 -07:00
itunes_worker.py Add genre whitelist for filtering junk tags during enrichment 2026-04-18 20:23:53 -07:00
jellyfin_client.py Fix Jellyfin playlist track fetch truncating at default API limit 2026-04-13 15:17:52 -07:00
lastfm_client.py Add Last.fm Track Radio to Discover page 2026-04-14 23:41:36 -07:00
lastfm_worker.py fix: stop enrichment workers from re-processing rows forever 2026-04-19 15:22:24 -07:00
lidarr_download_client.py Add Lidarr as 7th download source and validate music video path 2026-04-11 07:59:12 -07:00
listenbrainz_client.py Remove emojis from all Python log and print statements 2026-04-11 21:11:02 -07:00
listenbrainz_manager.py Add Last.fm Track Radio to Discover page 2026-04-14 23:41:36 -07:00
listening_stats_worker.py Tighten up teardown logic 2026-04-12 18:13:27 +03:00
lyrics_client.py Remove emojis from all Python log and print statements 2026-04-11 21:11:02 -07:00
matching_engine.py Reject junk artist Soulseek results and cancel downloads on wishlist clear 2026-04-17 12:24:50 -07:00
metadata_cache.py fix: batch metadata cache entity lookups 2026-04-19 15:22:24 -07:00
metadata_service.py Refine variant release dedup 2026-04-19 20:38:50 +03:00
musicbrainz_client.py
musicbrainz_search.py Add MusicBrainz search tab, wider global search, bump to v2.32 2026-04-18 02:06:27 -07:00
musicbrainz_service.py
musicbrainz_worker.py fix: stop enrichment workers from re-processing rows forever 2026-04-19 15:22:24 -07:00
navidrome_client.py Remove emojis from all Python log and print statements 2026-04-11 21:11:02 -07:00
personalized_playlists.py
plex_client.py Fix playlist cover art not syncing to Plex/Jellyfin from Deezer and other sources 2026-04-15 10:25:38 -07:00
qobuz_client.py Reject Qobuz 30-second sample/preview downloads 2026-04-15 20:41:48 -07:00
qobuz_worker.py fix: stop enrichment workers from re-processing rows forever 2026-04-19 15:22:24 -07:00
repair_worker.py Fix AcoustID mismatch fix failing with 'uuid' UnboundLocalError 2026-04-18 15:06:54 -07:00
replaygain.py Add ReplayGain analysis and tagging support 2026-04-14 19:09:25 -07:00
seasonal_discovery.py Remove emojis from all Python log and print statements 2026-04-11 21:11:02 -07:00
soulid_worker.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
soulseek_client.py Add first-run setup wizard and fix download path reloading 2026-04-11 22:45:16 -07:00
soulsync_client.py Add SoulSync standalone library — no media server required 2026-04-17 20:34:55 -07:00
spotify_client.py Fix Spotify OAuth stealing ports in Docker on fresh installs 2026-04-18 20:46:22 -07:00
spotify_public_scraper.py
spotify_worker.py Add genre whitelist for filtering junk tags during enrichment 2026-04-18 20:23:53 -07:00
tag_writer.py Add ReplayGain analysis and tagging support 2026-04-14 19:09:25 -07:00
tidal_client.py Fix playlist cover art not syncing to Plex/Jellyfin from Deezer and other sources 2026-04-15 10:25:38 -07:00
tidal_download_client.py Improve Tidal download failure diagnostics and error messaging 2026-04-14 14:07:50 -07:00
tidal_worker.py fix: stop enrichment workers from re-processing rows forever 2026-04-19 15:22:24 -07:00
watchlist_scanner.py Add per-artist metadata source override for watchlist scans 2026-04-18 16:05:05 -07:00
web_scan_manager.py Add SoulSync standalone library — no media server required 2026-04-17 20:34:55 -07:00
wishlist_service.py
worker_utils.py Improve graceful shutdown and rollback safety 2026-04-12 15:17:18 +03:00
youtube_client.py Add first-run setup wizard and fix download path reloading 2026-04-11 22:45:16 -07:00