diff --git a/beets/metadata_plugins.py b/beets/metadata_plugins.py index 381881b51..6a75d0f79 100644 --- a/beets/metadata_plugins.py +++ b/beets/metadata_plugins.py @@ -371,7 +371,9 @@ class SearchApiMetadataSourcePlugin( album: str, va_likely: bool, ) -> Iterable[AlbumInfo]: - query_filters: SearchFilter = {"album": album} + query_filters: SearchFilter = {} + if album: + query_filters["album"] = album if not va_likely: query_filters["artist"] = artist diff --git a/beetsplug/spotify.py b/beetsplug/spotify.py index a0a5c4358..0f6e0012b 100644 --- a/beetsplug/spotify.py +++ b/beetsplug/spotify.py @@ -130,9 +130,6 @@ class SpotifyPlugin( "mode": "list", "tiebreak": "popularity", "show_failures": False, - "artist_field": "albumartist", - "album_field": "album", - "track_field": "title", "region_filter": None, "regex": [], "client_id": "4e414367a1d14c75a5c5129a627fcab8", @@ -563,13 +560,17 @@ class SpotifyPlugin( regex["search"], regex["replace"], value ) - # Custom values can be passed in the config (just in case) - artist = item[self.config["artist_field"].get()] - album = item[self.config["album_field"].get()] - query_string = item[self.config["track_field"].get()] + artist = item["artist"] or item["albumartist"] + album = item["album"] + query_string = item["title"] # Query the Web API for each track, look for the items' JSON data - query_filters: SearchFilter = {"artist": artist, "album": album} + query_filters: SearchFilter = {} + if artist: + query_filters["artist"] = artist + if album: + query_filters["album"] = album + response_data_tracks = self._search_api( query_type="track", query_string=query_string, diff --git a/docs/changelog.rst b/docs/changelog.rst index 67c284a88..8a35569c9 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -11,6 +11,14 @@ New features: Bug fixes: +- :doc:`plugins/spotify` Fixed an issue where track matching and lookups could + return incorrect or misleading results when using the Spotify plugin. The + problem occurred primarily when no album was provided or when the album field + was an empty string. :bug:`5189` +- :doc:`plugins/spotify` Removed old and undocumented config options + `artist_field`, `album_field` and `track` that were causing issues with track + matching. :bug:`5189` + For packagers: Other changes: