def _get_token(self, refresh=False):
'''get jwt token for api'''
# get token from memory cache first
if self._token and not refresh:
return self._token
token = self._win.getProperty("script.module.thetvdb.token").decode('utf-8')
if token and not refresh:
return token
# refresh previous token
prev_token = self._addon.getSetting("token")
if prev_token:
url = 'https://api.thetvdb.com/refresh_token'
headers = {'Content-Type': 'application/json', 'Accept': 'application/json',
'User-agent': 'Mozilla/5.0', 'Authorization': 'Bearer %s' % prev_token}
response = requests.get(url, headers=headers)
if response and response.content and response.status_code == 200:
data = json.loads(response.content.decode('utf-8', 'replace'))
token = data["token"]
if token:
self._win.setProperty("script.module.thetvdb.token", token)
self._token = token
return token
# do first login to get initial token
url = 'https://api.thetvdb.com/login'
payload = {'apikey': self.api_key}
headers = {'Content-Type': 'application/json', 'Accept': 'application/json', 'User-agent': 'Mozilla/5.0'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
if response and response.content and response.status_code == 200:
data = json.loads(response.content.decode('utf-8', 'replace'))
token = data["token"]
self._addon.setSetting("token", token)
self._win.setProperty("script.module.thetvdb.token", token)
self._token = token
return token
else:
self._log_msg("Error getting JWT token!", xbmc.LOGWARNING)
return None
评论列表
文章目录