From 826791476b399d9e71480ce70eba1bda2eac264d Mon Sep 17 00:00:00 2001 From: Paco8 <5084042+Paco8@users.noreply.github.com> Date: Sun, 4 Feb 2024 16:46:11 +0100 Subject: [PATCH] Version 0.8.9 --- addon.xml | 2 +- resources/lib/movistar.py | 24 ++++++++++++++++++++++-- resources/lib/plugin.py | 9 +++------ resources/lib/proxy.py | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/addon.xml b/addon.xml index d2eefa8..eb50adc 100644 --- a/addon.xml +++ b/addon.xml @@ -1,7 +1,7 @@ diff --git a/resources/lib/movistar.py b/resources/lib/movistar.py index 2166d40..639dd15 100644 --- a/resources/lib/movistar.py +++ b/resources/lib/movistar.py @@ -123,7 +123,7 @@ class Movistar(object): LOG('device_id: {}'. format(self.account['device_id'])) # Tokens - content = self.cache.load('tokens.json', 60) + content = self.cache.load('tokens.json', 5) if content: data = json.loads(content) else: @@ -203,7 +203,9 @@ class Movistar(object): content = response.content.decode('utf-8') return content - def open_session(self, data, session_token, session_id = None): + def open_session(self, data, session_token=None, session_id=None): + if not session_token: + session_token = self.account['session_token'] headers = self.net.headers.copy() headers['Content-Type'] = 'application/json' headers['X-Hzid'] = session_token @@ -416,6 +418,12 @@ class Movistar(object): data = self.net.post_data(url, '', headers) return data.get('access_token') + def update_session_token(self): + new_hz_token = self.get_session_token() + if new_hz_token: + self.account['session_token'] = new_hz_token + return + def get_profiles(self): headers = self.net.headers.copy() headers['X-HZId'] = self.account['session_token'] @@ -1357,3 +1365,15 @@ class Movistar(object): return data['username'], decode_base64(data['password']) else: return '', '' + + def get_token_expire_date(self, token): + from .b64 import decode_base64 + res = None + l = token.split('.') + if len(l) > 1: + padding = len(l[1]) % 4 + l[1] += '=' * (4 - padding) if padding != 0 else '' + s = decode_base64(l[1]) + data = json.loads(s) + res = data['exp'] + return res diff --git a/resources/lib/plugin.py b/resources/lib/plugin.py index f3e1cc2..0ad900a 100644 --- a/resources/lib/plugin.py +++ b/resources/lib/plugin.py @@ -53,7 +53,6 @@ def play(params): stype = params['stype'] token = m.account['ssp_token'] - session_token = m.account['session_token'] import inputstreamhelper is_helper = inputstreamhelper.Helper('mpd', drm='com.widevine.alpha') @@ -69,9 +68,7 @@ def play(params): session_opened = False if addon.getSettingBool('open_session') or stype == 'vod': - hz_token = m.get_session_token() - if hz_token: session_token = hz_token - d = m.open_session(params['session_request'], session_token) + d = m.open_session(params['session_request']) session_opened = True LOG('Open session: d: {}'.format(d)) if d['resultCode'] != 0: @@ -85,7 +82,7 @@ def play(params): session_opened = False LOG('Delete session: d: {}'.format(d)) - LOG("token: {} session_token: {}".format(token, session_token)) + LOG("token: {}".format(token)) if stype in ['u7d', 'rec']: d = m.get_u7d_url(url) @@ -140,7 +137,7 @@ def play(params): if addon.getSettingBool('use_proxy_for_license') and proxy: request_id = str(int(time.time()*1000)) - license_url = '{}/license?token={}&stype={}&session_request={}&session_token={}&request_id={}||R{{SSM}}|'.format(proxy, quote_plus(token), stype, quote_plus(params['session_request']), quote_plus(session_token), request_id) + license_url = '{}/license?token={}&stype={}&session_request={}&request_id={}||R{{SSM}}|'.format(proxy, quote_plus(token), stype, quote_plus(params['session_request']), request_id) LOG('license_url: {}'.format(license_url)) play_item.setProperty('inputstream.adaptive.license_key', license_url) else: diff --git a/resources/lib/proxy.py b/resources/lib/proxy.py index 65f421f..38b3cfd 100644 --- a/resources/lib/proxy.py +++ b/resources/lib/proxy.py @@ -182,7 +182,7 @@ class RequestHandler(BaseHTTPRequestHandler): if token in previous_tokens and params['stype'] == 'vod': LOG('duplicated token') LOG('previous_tokens: {}'.format(previous_tokens)) - d = mvs().open_session(params['session_request'], params['session_token']) + d = mvs().open_session(params['session_request']) LOG('Open session (proxy): d: {}'.format(d)) if 'resultData' in d and 'cToken' in d['resultData']: token = d['resultData']['cToken']