From e3cf2e22091a5852193eb168ea80dbba889a18f9 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Mon, 15 Apr 2024 23:58:13 +0200 Subject: [PATCH] some small optimizations to the builtin playlists --- .../server/controllers/player_queues.py | 8 ++++---- .../server/providers/builtin/__init__.py | 20 ++++++++----------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/music_assistant/server/controllers/player_queues.py b/music_assistant/server/controllers/player_queues.py index facfb4a9..327b6001 100644 --- a/music_assistant/server/controllers/player_queues.py +++ b/music_assistant/server/controllers/player_queues.py @@ -331,12 +331,12 @@ class PlayerQueuesController(CoreController): media_item.media_type, media_item.item_id, media_item.provider ) elif media_item.media_type == MediaType.ARTIST: - tracks += await self._get_artist_tracks(media_item) + tracks += await self.get_artist_tracks(media_item) await self.mass.music.mark_item_played( media_item.media_type, media_item.item_id, media_item.provider ) elif media_item.media_type == MediaType.ALBUM: - tracks += await self._get_album_tracks(media_item) + tracks += await self.get_album_tracks(media_item) await self.mass.music.mark_item_played( media_item.media_type, media_item.item_id, media_item.provider ) @@ -1121,7 +1121,7 @@ class PlayerQueuesController(CoreController): break return tracks - async def _get_artist_tracks(self, artist: Artist) -> list[Track]: + async def get_artist_tracks(self, artist: Artist) -> list[Track]: """Return tracks for given artist, based on user preference.""" artist_items_conf = self.mass.config.get_raw_core_config_value( self.domain, @@ -1193,7 +1193,7 @@ class PlayerQueuesController(CoreController): return all_items return [] - async def _get_album_tracks(self, album: Album) -> list[Track]: + async def get_album_tracks(self, album: Album) -> list[Track]: """Return tracks for given album, based on user preference.""" album_items_conf = self.mass.config.get_raw_core_config_value( self.domain, diff --git a/music_assistant/server/providers/builtin/__init__.py b/music_assistant/server/providers/builtin/__init__.py index d0ea2e7f..86344035 100644 --- a/music_assistant/server/providers/builtin/__init__.py +++ b/music_assistant/server/providers/builtin/__init__.py @@ -521,23 +521,19 @@ class BuiltinProvider(MusicProvider): async for random_album in self.mass.music.albums.iter_library_items( order_by="RANDOM()" ): - for album_track in await self.mass.music.albums.tracks( - random_album.item_id, random_album.provider - ): + # use the function specified in the queue controller as that + # already handles unwrapping an album by user preference + for album_track in await self.mass.player_queues.get_album_tracks(random_album): count += 1 yield PlaylistTrack.from_dict({**album_track.to_dict(), "position": count}) - if count > 0: - return - return + return if builtin_playlist_id == RANDOM_ARTIST: async for random_artist in self.mass.music.artists.iter_library_items( order_by="RANDOM()" ): - for artist_track in await self.mass.music.artists.tracks( - random_artist.item_id, random_artist.provider - ): + # use the function specified in the queue controller as that + # already handles unwrapping an artist by user preference + for artist_track in await self.mass.player_queues.get_artist_tracks(random_artist): count += 1 yield PlaylistTrack.from_dict({**artist_track.to_dict(), "position": count}) - if count > 0: - return - return + return -- 2.34.1