diff --git a/alarm.py b/alarm.py index e317a8b..2b1067a 100644 --- a/alarm.py +++ b/alarm.py @@ -45,7 +45,7 @@ if __name__ == '__main__': network = Network(NetworkUser(os.environ['SPOTCLIENT'], os.environ['SPOTSECRET'], os.environ['SPOTREFRESH'])) - network.user.refresh_token() + network.user.refresh_access_token() found = False diff --git a/backup.py b/backup.py index b1948ca..2434890 100644 --- a/backup.py +++ b/backup.py @@ -32,7 +32,7 @@ if __name__ == '__main__': network = Network(NetworkUser(os.environ['SPOTCLIENT'], os.environ['SPOTSECRET'], os.environ['SPOTREFRESH'])) - network.user.refresh_token() + network.user.refresh_access_token() playlists = network.get_user_playlists() for playlist in playlists: diff --git a/generate_playlists.py b/generate_playlists.py index 9299c16..faa1308 100644 --- a/generate_playlists.py +++ b/generate_playlists.py @@ -125,7 +125,7 @@ def go(): net = Network(NetworkUser(os.environ['SPOTCLIENT'], os.environ['SPOTSECRET'], os.environ['SPOTREFRESH'])) - net.user.refresh_token() + net.user.refresh_access_token() engine = PlaylistEngine(net) diff --git a/getaccesstoken.py b/getaccesstoken.py index 90b65ff..914547b 100644 --- a/getaccesstoken.py +++ b/getaccesstoken.py @@ -18,6 +18,6 @@ if __name__ == '__main__': network = Network(NetworkUser(os.environ['SPOTCLIENT'], os.environ['SPOTSECRET'], os.environ['SPOTREFRESH'])) - network.user.refresh_token() + network.user.refresh_access_token() print(network.user.access_token) diff --git a/sort_playlist.py b/sort_playlist.py index dd514e1..12e8acb 100644 --- a/sort_playlist.py +++ b/sort_playlist.py @@ -31,7 +31,7 @@ def go(playlist_name): net = Network(NetworkUser(os.environ['SPOTCLIENT'], os.environ['SPOTSECRET'], os.environ['SPOTREFRESH'])) - net.user.refresh_token() + net.user.refresh_access_token() engine = PlaylistEngine(net) engine.reorder_playlist_by_added_date(playlist_name) diff --git a/spotframework/net/network.py b/spotframework/net/network.py index 1855866..032213a 100644 --- a/spotframework/net/network.py +++ b/spotframework/net/network.py @@ -31,7 +31,7 @@ class Network: if headers is None: headers = dict() - headers['Authorization'] = 'Bearer ' + self.user.accesstoken + headers['Authorization'] = 'Bearer ' + self.user.access_token if whole_url: req = requests.get(whole_url, params=params, headers=headers) @@ -73,7 +73,7 @@ class Network: if headers is None: headers = dict() - headers['Authorization'] = 'Bearer ' + self.user.accesstoken + headers['Authorization'] = 'Bearer ' + self.user.access_token req = requests.post(const.api_url + url, params=params, json=json, headers=headers) @@ -108,7 +108,7 @@ class Network: if headers is None: headers = dict() - headers['Authorization'] = 'Bearer ' + self.user.accesstoken + headers['Authorization'] = 'Bearer ' + self.user.access_token req = requests.put(const.api_url + url, params=params, json=json, headers=headers) diff --git a/spotframework/net/user.py b/spotframework/net/user.py index cf94419..c133185 100644 --- a/spotframework/net/user.py +++ b/spotframework/net/user.py @@ -13,10 +13,10 @@ logger = logging.getLogger(__name__) class NetworkUser(User): def __init__(self, client_id, client_secret, refresh_token, access_token=None): - super().__init__('') + super().__init__(None) - self.accesstoken = access_token - self.refreshtoken = refresh_token + self.access_token = access_token + self.refresh_token = refresh_token self.client_id = client_id self.client_secret = client_secret @@ -30,9 +30,9 @@ class NetworkUser(User): return Color.RED + Color.BOLD + 'NetworkUser' + Color.END + \ f': {self.username}, {self.display_name}, {self.uri}' - def refresh_token(self) -> None: + def refresh_access_token(self) -> None: - if self.refreshtoken is None: + if self.refresh_token is None: raise NameError('no refresh token to query') if self.client_id is None: @@ -44,7 +44,7 @@ class NetworkUser(User): idsecret = b64encode(bytes(self.client_id + ':' + self.client_secret, "utf-8")).decode("ascii") headers = {'Authorization': 'Basic %s' % idsecret} - data = {"grant_type": "refresh_token", "refresh_token": self.refreshtoken} + data = {"grant_type": "refresh_token", "refresh_token": self.refresh_token} now = datetime.now(timezone.utc) req = requests.post('https://accounts.spotify.com/api/token', data=data, headers=headers) @@ -52,7 +52,9 @@ class NetworkUser(User): if 200 <= req.status_code < 300: logger.debug('token refreshed') resp = req.json() - self.accesstoken = resp['access_token'] + self.access_token = resp['access_token'] + if resp.get('refresh_token', None): + self.refresh_token = resp['refresh_token'] self.token_expiry = resp['expires_in'] self.last_refreshed = now for func in self.on_refresh: @@ -94,7 +96,7 @@ class NetworkUser(User): def get_info(self) -> Optional[dict]: - headers = {'Authorization': 'Bearer %s' % self.accesstoken} + headers = {'Authorization': 'Bearer %s' % self.access_token} req = requests.get('https://api.spotify.com/v1/me', headers=headers) diff --git a/spotframework/player/player.py b/spotframework/player/player.py index b0041d1..941afec 100644 --- a/spotframework/player/player.py +++ b/spotframework/player/player.py @@ -36,7 +36,13 @@ class Player: def play(self, context: Union[Context, SpotifyAlbum, SpotifyPlaylist] = None, tracks: List[SpotifyTrack] = None, - device: Device = None): + device: Device = None, + device_name: str = None): + if device_name: + searched_device = next((i for i in self.available_devices if i.name == device_name), None) + if searched_device: + device = searched_device + if context and tracks: raise Exception('cant execute context and track list') if context: