#! /usr/bin/env python import sys sys.path.insert(0, '.') from tracker.runner import ( update_spy_playlists, update_spy_track_popularity, update_spy_artist_metrics, update_spy_albums, ) from tracker import db, spotify from tracker.logger import get_logger logger = get_logger(__name__) logger.info('debugging the spotify issue') token_info = db.Session.query(db.SystemData).get('spotify_oauth').data logger.info("Token:", extra=token_info) p_oauth = spotify.SpotOauth() import http.client as http_client original_level = http_client.HTTPConnection.debuglevel try: http_client.HTTPConnection.debuglevel = 1 logger.info("Token expired, refreshing") # token_info = p_oauth.refresh_access_token(token_info['refresh_token']) import base64, requests def refresh_access_token(refresh_token): payload = {'refresh_token': refresh_token, 'grant_type': 'refresh_token'} auth_header = base64.b64encode(str(p_oauth.client_id + ':' + p_oauth.client_secret).encode()) headers = {'Authorization': 'Basic %s' % auth_header.decode()} logger.info("Headers: {}".format(auth_header)) response = requests.post(self.OAUTH_TOKEN_URL, data=payload, headers=headers, proxies=self.proxies) if response.status_code != 200: if False: # debugging code print('headers', headers) print('request', response.url) self._warn("couldn't refresh token: code:%d reason:%s" \ % (response.status_code, response.reason)) return None token_info = response.json() token_info = self._add_custom_values_to_token_info(token_info) if not 'refresh_token' in token_info: token_info['refresh_token'] = refresh_token self._save_token_info(token_info) return token_info logger.info("Token refreshed.") finally: http_client.HTTPConnection.debuglevel = original_level