From d8b04b15a1f571b15513e269ad2658ad49855dd0 Mon Sep 17 00:00:00 2001 From: RemixDev Date: Sun, 25 Jul 2021 11:32:24 +0200 Subject: [PATCH] Added get_tracks_urls method --- deezer/__init__.py | 43 ++++++++++++++++++++++++++++++++++++++++--- setup.py | 2 +- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/deezer/__init__.py b/deezer/__init__.py index 7e22dd2..3a0e2f3 100644 --- a/deezer/__init__.py +++ b/deezer/__init__.py @@ -2,7 +2,7 @@ import requests from deezer.gw import GW from deezer.api import API -__version__ = "1.0.0" +__version__ = "1.0.1" class TrackFormats(): """Number associtation for formats""" @@ -113,13 +113,19 @@ class Deezer: self.childs.append({ 'id': child["USER_ID"], 'name': child["BLOG_NAME"], - 'picture': child.get("USER_PICTURE", "") + 'picture': child.get("USER_PICTURE", ""), + 'license_token': child["OPTIONS"]["license_token"], + 'can_stream_hq': child["OPTIONS"]["web_hq"] or child["OPTIONS"]["mobile_hq"], + 'can_stream_lossless': child["OPTIONS"]["web_lossless"] or child["OPTIONS"]["mobile_lossless"] }) else: self.childs.append({ 'id': user_data["USER"]["USER_ID"], 'name': user_data["USER"]["BLOG_NAME"], - 'picture': user_data["USER"].get("USER_PICTURE", "") + 'picture': user_data["USER"].get("USER_PICTURE", ""), + 'license_token': user_data["USER"]["OPTIONS"]["license_token"], + 'can_stream_hq': user_data["USER"]["OPTIONS"]["web_hq"] or user_data["USER"]["OPTIONS"]["mobile_hq"], + 'can_stream_lossless': user_data["USER"]["OPTIONS"]["web_lossless"] or user_data["USER"]["OPTIONS"]["mobile_lossless"] }) def change_account(self, child_n): @@ -128,3 +134,34 @@ class Deezer: self.selected_account = child_n return (self.current_user, self.selected_account) + + def get_tracks_urls(self, track_tokens): + if not isinstance(track_tokens, list): + track_tokens = [track_tokens, ] + if not self.current_user['license_token']: + return [] + + response = self.session.post( + "https://media.deezer.com/v1/get_url", + json={ + 'license_token': self.current_user['license_token'], + 'media': [{ + 'type': "FULL", + 'formats': [ + { 'cipher': "BF_CBC_STRIPE", 'format': "FLAC" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP3_320" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP3_256" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP3_128" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP3_64" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP3_MISC" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP4_RA3" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP4_RA2" }, + { 'cipher': "BF_CBC_STRIPE", 'format': "MP4_RA1" } + ] + }], + 'track_tokens': track_tokens + }, + headers = self.http_headers + ).json() + + return response['data'] diff --git a/setup.py b/setup.py index 7e614f7..56f1db8 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ README = (HERE / "README.md").read_text() setup( name="deezer-py", - version="1.0.0", + version="1.0.1", description="A wrapper for all Deezer's APIs", long_description=README, long_description_content_type="text/markdown",