[nrk] Add fallback API

Closes #1891
This commit is contained in:
pukkandan 2022-03-08 07:25:00 +05:30
parent b46ccbc6d4
commit 2807d1709b
No known key found for this signature in database
GPG Key ID: 7EEE9E1E817D0A39

View File

@ -8,6 +8,7 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
compat_HTTPError,
determine_ext, determine_ext,
ExtractorError, ExtractorError,
int_or_none, int_or_none,
@ -147,10 +148,14 @@ class NRKIE(NRKBaseIE):
def _real_extract(self, url): def _real_extract(self, url):
video_id = self._match_id(url).split('/')[-1] video_id = self._match_id(url).split('/')[-1]
path_templ = 'playback/%s/program/' + video_id
def call_playback_api(item, query=None): def call_playback_api(item, query=None):
return self._call_api(path_templ % item, video_id, item, query=query) try:
return self._call_api(f'playback/{item}/program/{video_id}', video_id, item, query=query)
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 400:
return self._call_api(f'playback/{item}/{video_id}', video_id, item, query=query)
raise
# known values for preferredCdn: akamai, iponly, minicdn and telenor # known values for preferredCdn: akamai, iponly, minicdn and telenor
manifest = call_playback_api('manifest', {'preferredCdn': 'akamai'}) manifest = call_playback_api('manifest', {'preferredCdn': 'akamai'})