[Deezer] Optimizations: Stop checking if track is available all the time (#683)
authorJonathan <jonathan@bangert.dk>
Fri, 26 May 2023 22:12:02 +0000 (00:12 +0200)
committerGitHub <noreply@github.com>
Fri, 26 May 2023 22:12:02 +0000 (00:12 +0200)
Stop checking if track is available all the time

music_assistant/server/providers/deezer/__init__.py

index 36625c023921114bcabe7beed1ff9e1c1c0df2ad..fa9efe0167dea3e395e566528cfa4d7eed9f0cb5 100644 (file)
@@ -217,8 +217,7 @@ class DeezerProvider(MusicProvider):
     async def get_library_tracks(self) -> AsyncGenerator[Track, None]:
         """Retrieve all library tracks from Deezer."""
         for track in await self.client.get_user_tracks():
-            if self.track_available(track, self.gw_client.user_country):
-                yield self.parse_track(track=track, user_country=self.gw_client.user_country)
+            yield self.parse_track(track=track, user_country=self.gw_client.user_country)
 
     async def get_artist(self, prov_artist_id: str) -> Artist:
         """Get full artist details by id."""
@@ -251,7 +250,6 @@ class DeezerProvider(MusicProvider):
         return [
             self.parse_track(track=track, user_country=self.gw_client.user_country)
             for track in album.tracks
-            if self.track_available(track, self.gw_client.user_country)
         ]
 
     async def get_playlist_tracks(self, prov_playlist_id: str) -> AsyncGenerator[Track, None]:
@@ -278,7 +276,6 @@ class DeezerProvider(MusicProvider):
         return [
             self.parse_track(track=track, user_country=self.gw_client.user_country)
             for track in top_tracks
-            if self.track_available(track, self.gw_client.user_country)
         ]
 
     async def library_add(self, prov_item_id: str, media_type: MediaType) -> bool:
@@ -534,7 +531,7 @@ class DeezerProvider(MusicProvider):
                     item_id=str(track.id),
                     provider_domain=self.domain,
                     provider_instance=self.instance_id,
-                    available=user_country in track.available_countries,
+                    available=self.track_available(track, user_country),
                 )
             },
             metadata=self.parse_metadata_track(track=track),
@@ -546,11 +543,7 @@ class DeezerProvider(MusicProvider):
     ) -> list[Track]:
         """Search for tracks and parse them."""
         deezer_tracks = await self.client.search_track(query=query, limit=limit)
-        return [
-            self.parse_track(track, user_country)
-            for track in deezer_tracks
-            if self.track_available(track, user_country)
-        ]
+        return [self.parse_track(track, user_country) for track in deezer_tracks]
 
     async def search_and_parse_artists(self, query: str, limit: int = 5) -> list[Artist]:
         """Search for artists and parse them."""