Tidal: include tracks that are not available currently (#644)
authorJozef Kruszynski <60214390+jozefKruszynski@users.noreply.github.com>
Mon, 8 May 2023 20:08:22 +0000 (22:08 +0200)
committerGitHub <noreply@github.com>
Mon, 8 May 2023 20:08:22 +0000 (22:08 +0200)
* include tracks that are not available currently

* refactor smaller iteration functions to list comprehensions

---------

Co-authored-by: jkruszynski <jozef@krush.at>
music_assistant/server/providers/tidal/__init__.py

index 675ddea261cdf1ed2ea30f274d0981a34bc61cc5..53b164399f3b18b5649487614fca906c581fc430 100644 (file)
@@ -274,36 +274,26 @@ class TidalProvider(MusicProvider):
     async def get_album_tracks(self, prov_album_id: str) -> list[Track]:
         """Get album tracks for given album id."""
         tidal_session = await self._get_tidal_session()
-        result = []
-        tracks = await get_album_tracks(tidal_session, prov_album_id)
-        for index, track_obj in enumerate(tracks, 1):
-            if track_obj.available:
-                track = await self._parse_track(track_obj=track_obj)
-                track.position = index
-                result.append(track)
-        return result
+        return [
+            await self._parse_track(track_obj=track)
+            for track in await get_album_tracks(tidal_session, prov_album_id)
+        ]
 
     async def get_artist_albums(self, prov_artist_id: str) -> list[Album]:
         """Get a list of all albums for the given artist."""
         tidal_session = await self._get_tidal_session()
-        result = []
-        albums = await get_artist_albums(tidal_session, prov_artist_id)
-        for album_obj in albums:
-            album = await self._parse_album(album_obj=album_obj)
-            result.append(album)
-        return result
+        return [
+            await self._parse_album(album_obj=album)
+            for album in await get_artist_albums(tidal_session, prov_artist_id)
+        ]
 
     async def get_artist_toptracks(self, prov_artist_id: str) -> list[Track]:
         """Get a list of 10 most popular tracks for the given artist."""
         tidal_session = await self._get_tidal_session()
-        result = []
-        tracks = await get_artist_toptracks(tidal_session, prov_artist_id)
-        for index, track_obj in enumerate(tracks, 1):
-            if track_obj.available:
-                track = await self._parse_track(track_obj=track_obj)
-                track.position = index
-                result.append(track)
-        return result
+        return [
+            await self._parse_track(track_obj=track)
+            for track in await get_artist_toptracks(tidal_session, prov_artist_id)
+        ]
 
     async def get_playlist_tracks(self, prov_playlist_id: str) -> AsyncGenerator[Track, None]:
         """Get all playlist tracks for given playlist id."""
@@ -321,13 +311,10 @@ class TidalProvider(MusicProvider):
     async def get_similar_tracks(self, prov_track_id: str, limit=25) -> list[Track]:
         """Get similar tracks for given track id."""
         tidal_session = await self._get_tidal_session()
-        similar_tracks_obj = await get_similar_tracks(tidal_session, prov_track_id, limit)
-        tracks = []
-        for track_obj in similar_tracks_obj:
-            if track_obj.available:
-                track = await self._parse_track(track_obj=track_obj)
-                tracks.append(track)
-        return tracks
+        return [
+            await self._parse_track(track_obj=track)
+            for track in await get_similar_tracks(tidal_session, prov_track_id, limit)
+        ]
 
     async def library_add(self, prov_item_id: str, media_type: MediaType):
         """Add item to library."""