aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/extractor/sonyliv.py
diff options
context:
space:
mode:
Diffstat (limited to 'hypervideo_dl/extractor/sonyliv.py')
-rw-r--r--hypervideo_dl/extractor/sonyliv.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/hypervideo_dl/extractor/sonyliv.py b/hypervideo_dl/extractor/sonyliv.py
index aaad420..4379572 100644
--- a/hypervideo_dl/extractor/sonyliv.py
+++ b/hypervideo_dl/extractor/sonyliv.py
@@ -6,10 +6,12 @@ import time
import uuid
from .common import InfoExtractor
-from ..compat import compat_HTTPError
+from ..networking.exceptions import HTTPError
from ..utils import (
ExtractorError,
int_or_none,
+ jwt_decode_hs256,
+ try_call,
try_get,
)
@@ -77,8 +79,10 @@ class SonyLIVIE(InfoExtractor):
self._HEADERS['device_id'] = self._get_device_id()
self._HEADERS['content-type'] = 'application/json'
- if username.lower() == 'token' and len(password) > 1198:
+ if username.lower() == 'token' and try_call(lambda: jwt_decode_hs256(password)):
self._HEADERS['authorization'] = password
+ self.report_login()
+ return
elif len(username) != 10 or not username.isdigit():
raise ExtractorError(f'Invalid username/password; {self._LOGIN_HINT}')
@@ -119,12 +123,12 @@ class SonyLIVIE(InfoExtractor):
'https://apiv2.sonyliv.com/AGL/%s/A/ENG/WEB/%s' % (version, path),
video_id, headers=self._HEADERS)['resultObj']
except ExtractorError as e:
- if isinstance(e.cause, compat_HTTPError) and e.cause.code == 406 and self._parse_json(
- e.cause.read().decode(), video_id)['message'] == 'Please subscribe to watch this content':
+ if isinstance(e.cause, HTTPError) and e.cause.status == 406 and self._parse_json(
+ e.cause.response.read().decode(), video_id)['message'] == 'Please subscribe to watch this content':
self.raise_login_required(self._LOGIN_HINT, method=None)
- if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
+ if isinstance(e.cause, HTTPError) and e.cause.status == 403:
message = self._parse_json(
- e.cause.read().decode(), video_id)['message']
+ e.cause.response.read().decode(), video_id)['message']
if message == 'Geoblocked Country':
self.raise_geo_restricted(countries=self._GEO_COUNTRIES)
raise ExtractorError(message)