From 6989701d6571080515d9e9f84712c324edcb6c2e Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Fri, 17 Apr 2026 11:12:07 -0700 Subject: [PATCH] Include album name in Soulseek search queries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Priority 0 query (artist + album + title) was gated behind a download mode check that excluded Soulseek, the source that benefits most from it. Soulseek searches match against file paths where users organize as Artist/Album/Track — without the album name, ambiguous artist names could match wrong-artist results (e.g. "Bleakness" as an album folder instead of an artist). Removed the mode gate so all sources get the most specific query first. --- core/matching_engine.py | 10 +++++----- web_server.py | 1 + webui/static/helper.js | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) 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' },