Fix playlist edit Deezer (#661)
authorJonathan <jonathan@bangert.dk>
Tue, 9 May 2023 09:16:43 +0000 (11:16 +0200)
committerGitHub <noreply@github.com>
Tue, 9 May 2023 09:16:43 +0000 (11:16 +0200)
Fix playlist edit

music_assistant/server/providers/deezer/__init__.py
music_assistant/server/providers/deezer/manifest.json
requirements_all.txt

index 74d7ae2db9adc462d346f90b43e6c4ccac0a5046..36625c023921114bcabe7beed1ff9e1c1c0df2ad 100644 (file)
@@ -257,8 +257,11 @@ class DeezerProvider(MusicProvider):
     async def get_playlist_tracks(self, prov_playlist_id: str) -> AsyncGenerator[Track, None]:
         """Get all tracks in a playlist."""
         playlist = await self.client.get_playlist(playlist_id=prov_playlist_id)
-        for track in playlist.tracks:
-            yield self.parse_track(track=track, user_country=self.gw_client.user_country)
+        for count, track in enumerate(playlist.tracks, start=1):
+            track_parsed = self.parse_track(track=track, user_country=self.gw_client.user_country)
+            track_parsed.position = count
+            track_parsed.id = track.id
+            yield track_parsed
 
     async def get_artist_albums(self, prov_artist_id: str) -> list[Album]:
         """Get albums by an artist."""
@@ -349,22 +352,15 @@ class DeezerProvider(MusicProvider):
         self, prov_playlist_id: str, positions_to_remove: tuple[int, ...]
     ):
         """Remove track(s) to playlist."""
-        prov_track_ids = []
-        print(positions_to_remove)
-        playlist = await self.client.get_playlist(prov_playlist_id)
-        print(playlist.tracks)
-        for track in playlist.tracks:
-            print(track.position)
-            print("uhua")
-            print(track)
+        playlist_track_ids = []
+        async for track in self.get_playlist_tracks(prov_playlist_id):
             if track.position in positions_to_remove:
-                prov_track_ids.append(track.item_id)
-            if len(prov_track_ids) == len(positions_to_remove):
+                playlist_track_ids.append(track.id)
+            if len(playlist_track_ids) == len(positions_to_remove):
                 break
-        print(prov_track_ids)
-        yeah = [eval(i) for i in prov_track_ids]
-        print(yeah)
-        await self.client.remove_playlist_tracks(playlist_id=prov_playlist_id, tracks=yeah)
+        await self.client.remove_playlist_tracks(
+            playlist_id=prov_playlist_id, tracks=list(playlist_track_ids)
+        )
 
     async def create_playlist(self, name: str) -> Playlist:
         """Create a new playlist on provider with given name."""
index 2872385e35e729da68e13a023c9b87c1b9fa6f90..1ce7bc07f7adef2c823115ca7a274c991ee6883e 100644 (file)
@@ -4,6 +4,6 @@
   "name": "Deezer",
   "description": "Support for the Deezer streaming provider in Music Assistant.",
   "codeowners": ["@Un10ck3d",  "@micha91"],
-  "requirements": ["git+https://github.com/Un10ck3d/deezer-python.git", "pycryptodome==3.17"],
+  "requirements": ["deezer-python==5.10.0", "pycryptodome==3.17"],
   "multi_instance": true
 }
index 93c0375540056dfe73082c1be11cfc25b89e718c..5f24347ea584f717155e11c7f66889e80d052232 100644 (file)
@@ -12,8 +12,8 @@ asyncio-throttle==1.0.2
 coloredlogs==15.0.1
 cryptography==40.0.2
 databases==0.7.0
+deezer-python==5.10.0
 faust-cchardet>=2.1.18
-git+https://github.com/Un10ck3d/deezer-python.git
 git+https://github.com/gieljnssns/python-radios.git@main
 git+https://github.com/jozefKruszynski/python-tidal.git@v0.7.1
 git+https://github.com/pytube/pytube.git@refs/pull/1501/head