From 4007539225cfdaa228d1b5503f8a2a798504ec93 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 9 May 2023 11:16:43 +0200 Subject: [PATCH] Fix playlist edit Deezer (#661) Fix playlist edit --- .../server/providers/deezer/__init__.py | 28 ++++++++----------- .../server/providers/deezer/manifest.json | 2 +- requirements_all.txt | 2 +- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/music_assistant/server/providers/deezer/__init__.py b/music_assistant/server/providers/deezer/__init__.py index 74d7ae2d..36625c02 100644 --- a/music_assistant/server/providers/deezer/__init__.py +++ b/music_assistant/server/providers/deezer/__init__.py @@ -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.""" diff --git a/music_assistant/server/providers/deezer/manifest.json b/music_assistant/server/providers/deezer/manifest.json index 2872385e..1ce7bc07 100644 --- a/music_assistant/server/providers/deezer/manifest.json +++ b/music_assistant/server/providers/deezer/manifest.json @@ -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 } diff --git a/requirements_all.txt b/requirements_all.txt index 93c03755..5f24347e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -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 -- 2.34.1