diff --git a/core/matching_engine.py b/core/matching_engine.py index 586914c5..1d3fd120 100644 --- a/core/matching_engine.py +++ b/core/matching_engine.py @@ -458,11 +458,11 @@ class MusicMatchingEngine: if album_name: break - # PRIORITY 0: Try exact Artist + Album + Title (Best for OSTs) - # Often YouTube videos are titled "Artist - Album - Title" or similar - # Only include if mode is youtube or hybrid (safe for Soulseek default) - download_mode = config_manager.get('download_source.mode', 'soulseek') - if download_mode in ['youtube', 'tidal', 'qobuz', 'hifi', 'hybrid'] and album_name and album_name.lower() not in ['single', 'ep', 'greatest hits']: + # PRIORITY 0: Try exact Artist + Album + Title + # For Soulseek this matches the typical folder structure (Artist/Album/Track) + # and prevents wrong-artist downloads when the artist name appears as an album + # name in another artist's library. For other sources it narrows text search. + if album_name and album_name.lower() not in ['single', 'ep', 'greatest hits']: album_clean = self.clean_album_name(album_name) if album_clean: # Standard query: Artist Album Title diff --git a/web_server.py b/web_server.py index 200630c2..585dcf4c 100644 --- a/web_server.py +++ b/web_server.py @@ -22312,6 +22312,7 @@ def get_version_info(): "• Fix Spotify enrichment worker infinite loop on pre-matched artists", "• Reject Qobuz 30-second sample/preview downloads", "• Fix slskd timeout spam — dashboard and download status skip slskd polling when Soulseek is not active or disconnected", + "• Fix Soulseek search queries missing album name — reduces wrong-artist downloads", ], }, { diff --git a/webui/static/helper.js b/webui/static/helper.js index 76be15eb..0633e059 100644 --- a/webui/static/helper.js +++ b/webui/static/helper.js @@ -3613,6 +3613,7 @@ const WHATS_NEW = { { title: 'Fix Watchlist Scan False Failures', desc: 'Artists with no new releases in the lookback window were incorrectly reported as scan failures. Empty discography now correctly treated as success' }, { title: 'Fix Wishlist Album Remove', desc: 'Removing albums from the Wishlist Nebula now works — API accepts album_name as fallback when album_id is unavailable' }, { title: 'Fix Soulseek Timeout Spam', desc: 'Dashboard stats and download status endpoints no longer poll slskd when Soulseek is not the active download source or is known to be disconnected. Eliminates connection timeout errors every 10 seconds for users who have a slskd URL configured but use YouTube/Tidal/etc.' }, + { title: 'Fix Soulseek Search Missing Album Name', desc: 'Soulseek search queries now include the album name (Artist + Album + Track) as the first search attempt for all download sources. Previously this was excluded for Soulseek-only mode, causing wrong-artist downloads when an artist name matched an album folder in another user\'s library' }, // --- April 15, 2026 --- { date: 'April 15, 2026' },