|
|
|
@ -13,8 +13,8 @@ from ..utils import (
|
|
|
|
|
get_element_by_class,
|
|
|
|
|
get_element_html_by_class,
|
|
|
|
|
int_or_none,
|
|
|
|
|
jwt_decode_hs256,
|
|
|
|
|
jwt_encode_hs256,
|
|
|
|
|
jwt_is_expired,
|
|
|
|
|
make_archive_id,
|
|
|
|
|
merge_dicts,
|
|
|
|
|
parse_age_limit,
|
|
|
|
@ -304,15 +304,15 @@ class VrtNUIE(VRTBaseIE):
|
|
|
|
|
access_token = self._get_vrt_cookie(self._ACCESS_TOKEN_COOKIE_NAME)
|
|
|
|
|
video_token = self._get_vrt_cookie(self._VIDEO_TOKEN_COOKIE_NAME)
|
|
|
|
|
|
|
|
|
|
if (access_token and not self._is_jwt_token_expired(access_token)
|
|
|
|
|
and video_token and not self._is_jwt_token_expired(video_token)):
|
|
|
|
|
if (access_token and not jwt_is_expired(access_token)
|
|
|
|
|
and video_token and not jwt_is_expired(video_token)):
|
|
|
|
|
return access_token, video_token
|
|
|
|
|
|
|
|
|
|
if has_credentials:
|
|
|
|
|
access_token, video_token = self.cache.load(self._NETRC_MACHINE, 'token_data', default=(None, None))
|
|
|
|
|
|
|
|
|
|
if (access_token and not self._is_jwt_token_expired(access_token)
|
|
|
|
|
and video_token and not self._is_jwt_token_expired(video_token)):
|
|
|
|
|
if (access_token and not jwt_is_expired(access_token)
|
|
|
|
|
and video_token and not jwt_is_expired(video_token)):
|
|
|
|
|
self.write_debug('Restored tokens from cache')
|
|
|
|
|
self._set_cookie(self._TOKEN_COOKIE_DOMAIN, self._ACCESS_TOKEN_COOKIE_NAME, access_token)
|
|
|
|
|
self._set_cookie(self._TOKEN_COOKIE_DOMAIN, self._VIDEO_TOKEN_COOKIE_NAME, video_token)
|
|
|
|
@ -347,18 +347,14 @@ class VrtNUIE(VRTBaseIE):
|
|
|
|
|
# Refresh token cookie is scoped to /vrtmax/sso, others are scoped to /
|
|
|
|
|
return try_call(lambda: self._get_cookies('https://www.vrt.be/vrtmax/sso')[cookie_name].value)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def _is_jwt_token_expired(token):
|
|
|
|
|
return jwt_decode_hs256(token)['exp'] - time.time() < 300
|
|
|
|
|
|
|
|
|
|
def _perform_login(self, username, password):
|
|
|
|
|
refresh_token = self._get_vrt_cookie(self._REFRESH_TOKEN_COOKIE_NAME)
|
|
|
|
|
if refresh_token and not self._is_jwt_token_expired(refresh_token):
|
|
|
|
|
if refresh_token and not jwt_is_expired(refresh_token):
|
|
|
|
|
self.write_debug('Using refresh token from logged-in cookies; skipping login with credentials')
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
refresh_token = self.cache.load(self._NETRC_MACHINE, 'refresh_token', default=None)
|
|
|
|
|
if refresh_token and not self._is_jwt_token_expired(refresh_token):
|
|
|
|
|
if refresh_token and not jwt_is_expired(refresh_token):
|
|
|
|
|
self.write_debug('Restored refresh token from cache')
|
|
|
|
|
self._set_cookie(self._TOKEN_COOKIE_DOMAIN, self._REFRESH_TOKEN_COOKIE_NAME, refresh_token, path='/vrtmax/sso')
|
|
|
|
|
return
|
|
|
|
|