From: Marcel van der Veldt Date: Sat, 20 Dec 2025 22:15:49 +0000 (+0100) Subject: Add library filter to artist tracks X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=2a83a518797c3aa8aec36fdb6ad331bb3a07e031;p=music-assistant-server.git Add library filter to artist tracks --- diff --git a/music_assistant/controllers/media/artists.py b/music_assistant/controllers/media/artists.py index 7ae766dd..95dbb43f 100644 --- a/music_assistant/controllers/media/artists.py +++ b/music_assistant/controllers/media/artists.py @@ -115,8 +115,13 @@ class ArtistsController(MediaControllerBase[Artist]): item_id: str, provider_instance_id_or_domain: str, in_library_only: bool = False, + provider_filter: str | list[str] | None = None, ) -> list[Track]: """Return all/top tracks for an artist.""" + if provider_filter and provider_instance_id_or_domain != "library": + raise MusicAssistantError("Cannot use provider_filter with specific provider request") + if isinstance(provider_filter, str): + provider_filter = [provider_filter] # always check if we have a library item for this artist library_artist = await self.get_library_item_by_prov_id( item_id, provider_instance_id_or_domain @@ -125,7 +130,7 @@ class ArtistsController(MediaControllerBase[Artist]): return await self.get_provider_artist_toptracks(item_id, provider_instance_id_or_domain) db_items = await self.get_library_artist_tracks(library_artist.item_id) result: list[Track] = db_items - if in_library_only: + if in_library_only and not provider_filter: # return in-library items only return result # return all (unique) items from all providers @@ -135,6 +140,8 @@ class ArtistsController(MediaControllerBase[Artist]): for provider_mapping in library_artist.provider_mappings: if provider_mapping.provider_instance not in unique_providers: continue + if provider_filter and provider_mapping.provider_instance not in provider_filter: + continue provider_tracks = await self.get_provider_artist_toptracks( provider_mapping.item_id, provider_mapping.provider_instance )