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
)
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,
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,
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