From 78fd1cb9c0edf919d5a8ab0feda3acd6d06a110d Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Sat, 23 Jul 2022 02:49:23 +0200 Subject: [PATCH] add album artists filter --- music_assistant/controllers/music/artists.py | 21 ++++++++++++++++++++ music_assistant/helpers/database.py | 3 +-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/music_assistant/controllers/music/artists.py b/music_assistant/controllers/music/artists.py index b112c28b..489a3d2d 100644 --- a/music_assistant/controllers/music/artists.py +++ b/music_assistant/controllers/music/artists.py @@ -17,6 +17,7 @@ from music_assistant.models.media_items import ( Artist, ItemMapping, MediaType, + PagedItems, Track, ) from music_assistant.models.music_provider import MusicProvider @@ -29,6 +30,26 @@ class ArtistsController(MediaControllerBase[Artist]): media_type = MediaType.ARTIST item_cls = Artist + async def album_artists( + self, + in_library: Optional[bool] = None, + search: Optional[str] = None, + limit: int = 500, + offset: int = 0, + order_by: str = "sort_name", + ) -> PagedItems: + """Get in-database album artists.""" + return await self.db_items( + in_library=in_library, + search=search, + limit=limit, + offset=offset, + order_by=order_by, + query_parts=[ + "artists.sort_name in (select albums.sort_artist from albums)" + ], + ) + async def toptracks( self, item_id: Optional[str] = None, diff --git a/music_assistant/helpers/database.py b/music_assistant/helpers/database.py index 2791d684..2ad21880 100755 --- a/music_assistant/helpers/database.py +++ b/music_assistant/helpers/database.py @@ -95,8 +95,7 @@ class Database: params: Optional[dict] = None, ) -> int: """Get row count for given custom query.""" - query = query.split("from", 1)[-1].split("FROM", 1)[-1] - query = f"SELECT count() FROM {query}" + query = f"SELECT count() FROM ({query})" if result := await self._db.fetch_one(query, params): return result[0] return 0 -- 2.34.1