import base64 import datetime import requests import sys client_id = 'REPLACE ME' client_secret = 'REPLACE ME' expires = datetime.datetime.now().timestamp() access_token = None def has_expired(): return (not access_token) or \ expires < (datetime.datetime.now().timestamp()) def get_access_token(): if has_expired(): client_credentials = \ bytes(client_id + ':' + client_secret, encoding='utf-8') base = base64.b64encode(client_credentials) payload = {'grant_type': 'client_credentials'} headers = {'Authorization': 'Basic {}'.format(base.decode('utf-8'))} r = requests.post( 'https://accounts.spotify.com/api/token', data=payload, headers=headers) json_response = r.json() current = datetime.datetime.now().timestamp() setattr( sys.modules[__name__], 'expires', json_response.get('expires_in', 0) + current - 5) setattr( sys.modules[__name__], 'access_token', json_response['access_token']) return access_token