[sevenplay] detect API errors

This commit is contained in:
Remita Amine 2020-12-29 14:09:10 +01:00
parent 7acd042bbb
commit c931c4b8dd

View file

@ -4,8 +4,12 @@ from __future__ import unicode_literals
import re import re
from .brightcove import BrightcoveNewIE from .brightcove import BrightcoveNewIE
from ..compat import compat_str from ..compat import (
compat_HTTPError,
compat_str,
)
from ..utils import ( from ..utils import (
ExtractorError,
try_get, try_get,
update_url_query, update_url_query,
) )
@ -41,6 +45,7 @@ class SevenPlusIE(BrightcoveNewIE):
def _real_extract(self, url): def _real_extract(self, url):
path, episode_id = re.match(self._VALID_URL, url).groups() path, episode_id = re.match(self._VALID_URL, url).groups()
try:
media = self._download_json( media = self._download_json(
'https://videoservice.swm.digital/playback', episode_id, query={ 'https://videoservice.swm.digital/playback', episode_id, query={
'appId': '7plus', 'appId': '7plus',
@ -51,6 +56,11 @@ class SevenPlusIE(BrightcoveNewIE):
'deliveryId': 'csai', 'deliveryId': 'csai',
'videoType': 'vod', 'videoType': 'vod',
})['media'] })['media']
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
raise ExtractorError(self._parse_json(
e.cause.read().decode(), episode_id)[0]['error_code'], expected=True)
raise
for source in media.get('sources', {}): for source in media.get('sources', {}):
src = source.get('src') src = source.get('src')