Added temporary first Spotify implementation
continuous-integration/drone the build failed
Details
continuous-integration/drone the build failed
Details
parent
5d36a8e533
commit
85f27b081c
|
@ -0,0 +1,55 @@
|
||||||
|
import base64
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
class CredentialError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Spotify:
|
||||||
|
def __init__(self, client_id, client_secret):
|
||||||
|
self.client_id = client_id
|
||||||
|
self.client_secret = client_secret
|
||||||
|
self.access_token = ""
|
||||||
|
self.token_type = ""
|
||||||
|
self.expiration_time = 0
|
||||||
|
self.scope = ""
|
||||||
|
|
||||||
|
def request_token(self):
|
||||||
|
b64_encoded = base64.b64encode(
|
||||||
|
"{}:{}".format(self.client_id, self.client_secret).encode()
|
||||||
|
)
|
||||||
|
headers = {"Authorization": "Basic {}".format(b64_encoded.decode("ascii"))}
|
||||||
|
|
||||||
|
data = {"grant_type": "client_credentials"}
|
||||||
|
|
||||||
|
post = requests.post(
|
||||||
|
"https://accounts.spotify.com/api/token", headers=headers, data=data
|
||||||
|
)
|
||||||
|
status_code = post.status_code
|
||||||
|
|
||||||
|
if status_code == 401:
|
||||||
|
raise CredentialError("Provided credentials are not correct.")
|
||||||
|
|
||||||
|
if status_code == 200:
|
||||||
|
self.access_token = post.json()["access_token"]
|
||||||
|
self.token_type = post.json()["token_type"]
|
||||||
|
self.expiration_time = post.json()["expires_in"]
|
||||||
|
self.scope = post.json()["scope"]
|
||||||
|
|
||||||
|
def search(self, search_term, types):
|
||||||
|
if not self.access_token:
|
||||||
|
self.request_token()
|
||||||
|
|
||||||
|
encoded_search_term = urllib.parse.quote(search_term)
|
||||||
|
full_url = "https://api.spotify.com/v1/search?q={}&type={}".format(
|
||||||
|
encoded_search_term, ",".join(types)
|
||||||
|
)
|
||||||
|
|
||||||
|
get = requests.get(
|
||||||
|
full_url, headers={"Authorization": "Bearer " + self.access_token}
|
||||||
|
)
|
||||||
|
|
||||||
|
results = get.json()
|
||||||
|
|
||||||
|
return results
|
|
@ -1,3 +0,0 @@
|
||||||
def test_succeed():
|
|
||||||
"""Placeholder test to make CI succeed."""
|
|
||||||
pass
|
|
Reference in New Issue