From 92e9a3fc6e909c107d0d966ad4ee2db2f6abf04f Mon Sep 17 00:00:00 2001 From: RemixDev Date: Tue, 5 May 2020 19:45:35 +0200 Subject: [PATCH] Added support for private deezer playlists --- deemix/api/deezer.py | 2 +- deemix/app/queuemanager.py | 39 +++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/deemix/api/deezer.py b/deemix/api/deezer.py index 0765e4c..0b63585 100755 --- a/deemix/api/deezer.py +++ b/deemix/api/deezer.py @@ -188,7 +188,7 @@ class Deezer: return self.gw_api_call('deezer.pageArtist', {'art_id': art_id}) def get_playlist_gw(self, playlist_id): - return self.gw_api_call('deezer.pagePlaylist', {'playlist_id': playlist_id}) + return self.gw_api_call('deezer.pagePlaylist', {'playlist_id': playlist_id, 'lang': 'en'}) def get_playlist_tracks_gw(self, playlist_id): tracks_array = [] diff --git a/deemix/app/queuemanager.py b/deemix/app/queuemanager.py index 0e7b4ca..fa3b95e 100644 --- a/deemix/app/queuemanager.py +++ b/deemix/app/queuemanager.py @@ -95,7 +95,44 @@ def generateQueueItem(dz, sp, url, settings, bitrate=None, albumAPI=None, interf result['collection'].append(trackAPI) elif type == "playlist": - playlistAPI = dz.get_playlist(id) + try: + playlistAPI = dz.get_playlist(id) + except: + playlistAPI = dz.get_playlist_gw(id)['results']['DATA'] + newPlaylist = { + 'id': playlistAPI['PLAYLIST_ID'], + 'title': playlistAPI['TITLE'], + 'description': playlistAPI['DESCRIPTION'], + 'duration': playlistAPI['DURATION'], + 'public': False, + 'is_loved_track': False, + 'collaborative': False, + 'nb_tracks': playlistAPI['NB_SONG'], + 'fans': playlistAPI['NB_FAN'], + 'link': "https://www.deezer.com/playlist/"+playlistAPI['PLAYLIST_ID'], + 'share': None, + 'picture': "https://api.deezer.com/playlist/"+playlistAPI['PLAYLIST_ID']+"/image", + 'picture_small': "https://cdns-images.dzcdn.net/images/"+playlistAPI['PICTURE_TYPE']+"/"+playlistAPI['PLAYLIST_PICTURE']+"/56x56-000000-80-0-0.jpg", + 'picture_medium': "https://cdns-images.dzcdn.net/images/"+playlistAPI['PICTURE_TYPE']+"/"+playlistAPI['PLAYLIST_PICTURE']+"/250x250-000000-80-0-0.jpg", + 'picture_big': "https://cdns-images.dzcdn.net/images/"+playlistAPI['PICTURE_TYPE']+"/"+playlistAPI['PLAYLIST_PICTURE']+"/500x500-000000-80-0-0.jpg", + 'picture_xl': "https://cdns-images.dzcdn.net/images/"+playlistAPI['PICTURE_TYPE']+"/"+playlistAPI['PLAYLIST_PICTURE']+"/1000x1000-000000-80-0-0.jpg", + 'checksum': playlistAPI['CHECKSUM'], + 'tracklist': "https://api.deezer.com/playlist/"+playlistAPI['PLAYLIST_ID']+"/tracks", + 'creation_date': playlistAPI['DATE_ADD'], + 'creator': { + 'id': playlistAPI['PARENT_USER_ID'], + 'name': playlistAPI['PARENT_USERNAME'], + 'tracklist': "https://api.deezer.com/user/"+playlistAPI['PARENT_USER_ID']+"/flow", + 'type': "user" + }, + 'type': "playlist" + } + playlistAPI = newPlaylist + if not playlistAPI['public'] and playlistAPI['creator']['id'] != str(dz.user['id']): + print("You can't download others private playlists.") + result['error'] = "You can't download others private playlists." + return result + playlistTracksAPI = dz.get_playlist_tracks_gw(id) playlistAPI['various_artist'] = dz.get_artist(5080)