Version 0.8.9
This commit is contained in:
1 parent
5c996bba0a
commit
826791476b
4 files changed
+27
-10
No files matched your search
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<addon id="plugin.video.movistarplus"
|
<addon id="plugin.video.movistarplus"
|
||||||
name="Movistar+"
|
name="Movistar+"
|
||||||
version="0.8.8"
|
version="0.8.9"
|
||||||
provider-name="Paco8">
|
provider-name="Paco8">
|
||||||
<requires>
|
<requires>
|
||||||
<!--- <import addon="xbmc.python" version="2.25.0"/> -->
|
<!--- <import addon="xbmc.python" version="2.25.0"/> -->
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ class Movistar(object):
|
|||||||
LOG('device_id: {}'. format(self.account['device_id']))
|
LOG('device_id: {}'. format(self.account['device_id']))
|
||||||
|
|
||||||
# Tokens
|
# Tokens
|
||||||
content = self.cache.load('tokens.json', 60)
|
content = self.cache.load('tokens.json', 5)
|
||||||
if content:
|
if content:
|
||||||
data = json.loads(content)
|
data = json.loads(content)
|
||||||
else:
|
else:
|
||||||
@@ -203,7 +203,9 @@ class Movistar(object):
|
|||||||
content = response.content.decode('utf-8')
|
content = response.content.decode('utf-8')
|
||||||
return content
|
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 = self.net.headers.copy()
|
||||||
headers['Content-Type'] = 'application/json'
|
headers['Content-Type'] = 'application/json'
|
||||||
headers['X-Hzid'] = session_token
|
headers['X-Hzid'] = session_token
|
||||||
@@ -416,6 +418,12 @@ class Movistar(object):
|
|||||||
data = self.net.post_data(url, '', headers)
|
data = self.net.post_data(url, '', headers)
|
||||||
return data.get('access_token')
|
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):
|
def get_profiles(self):
|
||||||
headers = self.net.headers.copy()
|
headers = self.net.headers.copy()
|
||||||
headers['X-HZId'] = self.account['session_token']
|
headers['X-HZId'] = self.account['session_token']
|
||||||
@@ -1357,3 +1365,15 @@ class Movistar(object):
|
|||||||
return data['username'], decode_base64(data['password'])
|
return data['username'], decode_base64(data['password'])
|
||||||
else:
|
else:
|
||||||
return '', ''
|
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
|
||||||
@@ -53,7 +53,6 @@ def play(params):
|
|||||||
stype = params['stype']
|
stype = params['stype']
|
||||||
|
|
||||||
token = m.account['ssp_token']
|
token = m.account['ssp_token']
|
||||||
session_token = m.account['session_token']
|
|
||||||
|
|
||||||
import inputstreamhelper
|
import inputstreamhelper
|
||||||
is_helper = inputstreamhelper.Helper('mpd', drm='com.widevine.alpha')
|
is_helper = inputstreamhelper.Helper('mpd', drm='com.widevine.alpha')
|
||||||
@@ -69,9 +68,7 @@ def play(params):
|
|||||||
|
|
||||||
session_opened = False
|
session_opened = False
|
||||||
if addon.getSettingBool('open_session') or stype == 'vod':
|
if addon.getSettingBool('open_session') or stype == 'vod':
|
||||||
hz_token = m.get_session_token()
|
d = m.open_session(params['session_request'])
|
||||||
if hz_token: session_token = hz_token
|
|
||||||
d = m.open_session(params['session_request'], session_token)
|
|
||||||
session_opened = True
|
session_opened = True
|
||||||
LOG('Open session: d: {}'.format(d))
|
LOG('Open session: d: {}'.format(d))
|
||||||
if d['resultCode'] != 0:
|
if d['resultCode'] != 0:
|
||||||
@@ -85,7 +82,7 @@ def play(params):
|
|||||||
session_opened = False
|
session_opened = False
|
||||||
LOG('Delete session: d: {}'.format(d))
|
LOG('Delete session: d: {}'.format(d))
|
||||||
|
|
||||||
LOG("token: {} session_token: {}".format(token, session_token))
|
LOG("token: {}".format(token))
|
||||||
|
|
||||||
if stype in ['u7d', 'rec']:
|
if stype in ['u7d', 'rec']:
|
||||||
d = m.get_u7d_url(url)
|
d = m.get_u7d_url(url)
|
||||||
@@ -140,7 +137,7 @@ def play(params):
|
|||||||
|
|
||||||
if addon.getSettingBool('use_proxy_for_license') and proxy:
|
if addon.getSettingBool('use_proxy_for_license') and proxy:
|
||||||
request_id = str(int(time.time()*1000))
|
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))
|
LOG('license_url: {}'.format(license_url))
|
||||||
play_item.setProperty('inputstream.adaptive.license_key', license_url)
|
play_item.setProperty('inputstream.adaptive.license_key', license_url)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ class RequestHandler(BaseHTTPRequestHandler):
|
|||||||
if token in previous_tokens and params['stype'] == 'vod':
|
if token in previous_tokens and params['stype'] == 'vod':
|
||||||
LOG('duplicated token')
|
LOG('duplicated token')
|
||||||
LOG('previous_tokens: {}'.format(previous_tokens))
|
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))
|
LOG('Open session (proxy): d: {}'.format(d))
|
||||||
if 'resultData' in d and 'cToken' in d['resultData']:
|
if 'resultData' in d and 'cToken' in d['resultData']:
|
||||||
token = d['resultData']['cToken']
|
token = d['resultData']['cToken']
|
||||||
|
|||||||
Reference in new issue
Block a user