import base64 import datetime import requests import sys client_id = '4539b00212a441c6a3716e67e4cb9ef7' client_secret = '17d34e38d6b14f83a2e86f0d9c8b8780' 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() setattr(sys.modules[__name__], 'expires', json_response.get('expires_in', 0) + datetime.datetime.now().timestamp() - 5) setattr(sys.modules[__name__], 'access_token', json_response['access_token']) return access_token