from sh import xdg_open
from urllib.parse import urlencode
import json
import requests

def authorize(client_id):
    auth_url = 'https://accounts.spotify.com/authorize'
    auth_params = {'client_id': client_id,
                   'response_type': 'code',
                   'redirect_uri': 'https://spotify.segfault.party/callback',
                   'scope': 'user-modify-playback-state user-read-playback-state user-read-currently-playing playlist-modify-private playlist-read-collaborative playlist-read-private playlist-modify-public'}
    xdg_open(auth_url + '?' + urlencode(auth_params))
    input('Please press enter when prompted to by the callback!')

def get_token(config, refresh=False):
    if 'token' not in config or refresh:
        token = requests.get('https://spotify.segfault.party/get_token',
                             auth=tuple(config['token_auth'])).text
        config['token'] = token
        with open('config.json', 'w') as f:
            json.dump(config, f)
    return config['token']

if __name__ == '__main__':
    with open('config.json') as f:
        config = json.load(f)
    print(get_token(config, refresh=True))
