@use_cache(expiration=3600, category=CACHE_CATEGORY_PLAYLISTS)
async def _get_builtin_playlist_random_album(self) -> list[Track]:
- for in_library_only in (True, False):
- for min_tracks_required in (10, 5, 1):
- for random_album in await self.mass.music.albums.library_items(
- limit=25, order_by="random"
- ):
- tracks = await self.mass.music.albums.tracks(
- random_album.item_id, random_album.provider, in_library_only=in_library_only
- )
- if len(tracks) < min_tracks_required:
- continue
- for idx, track in enumerate(tracks, 1):
- track.position = idx
- return tracks
+ for random_album in await self.mass.music.albums.library_items(
+ limit=1, order_by="random", extra_query="album_type != 'single'"
+ ):
+ tracks = await self.mass.music.albums.tracks(
+ random_album.item_id, random_album.provider
+ )
+ for idx, track in enumerate(tracks, 1):
+ track.position = idx
+ return tracks
return []
@use_cache(expiration=3600, category=CACHE_CATEGORY_PLAYLISTS)