travail d'un we (j'en ai big marre)
This commit is contained in:
56
final-loop/src/get_uri.py
Normal file
56
final-loop/src/get_uri.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from typing import Tuple
|
||||
import requests
|
||||
|
||||
HEADERS_LUT = {
|
||||
"X-Client-Id": "58bd3c95768941ea9eb4350aaa033eb3",
|
||||
"Accept-Encoding": "gzip, deflate",
|
||||
"Connection": "close",
|
||||
"App-Platform": "iOS",
|
||||
"Accept": "*/*",
|
||||
"User-Agent": "Spotify/8.5.68 iOS/13.4 (iPhone9,3)",
|
||||
"Accept-Language": "en",
|
||||
"Spotify-App-Version": "8.5.68",
|
||||
}
|
||||
MEDIA_REF_LUT_URL = "https://spclient.wg.spotify.com:443/scannable-id/id"
|
||||
|
||||
def get_uri(media_ref: int, token: str):
|
||||
"""Query Spotify internal API to get the URI of the media reference."""
|
||||
header = {
|
||||
**HEADERS_LUT,
|
||||
"Authorization": f"Bearer {token}"
|
||||
}
|
||||
url = f'{MEDIA_REF_LUT_URL}/{media_ref}?format=json'
|
||||
response = requests.get(url, headers=header)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
def get_info(uri: str, token: str) -> Tuple[dict, dict]:
|
||||
"""Query the Spotify API to get information about a URI."""
|
||||
info_headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
"Authorization": f"Bearer {token}"
|
||||
}
|
||||
split = uri.split(":")
|
||||
content_type = split[-2] + "s"
|
||||
id = split[-1]
|
||||
response = requests.get(f"https://api.spotify.com/v1/{content_type}/{id}", headers=info_headers)
|
||||
response.raise_for_status()
|
||||
resp = response.json()
|
||||
result = {
|
||||
"name": resp["name"],
|
||||
"type": split[-2],
|
||||
"url": resp["external_urls"]["spotify"],
|
||||
}
|
||||
if "artists" in resp:
|
||||
result['artists'] = []
|
||||
for a in resp['artists']:
|
||||
result["artists"].append(a["name"])
|
||||
if "album" in resp:
|
||||
result['album'] = resp['album']['name']
|
||||
|
||||
if "description" in resp:
|
||||
result["description"] = resp['description']
|
||||
|
||||
return result, resp
|
||||
|
||||
Reference in New Issue
Block a user