|
|
@ -14,16 +14,6 @@ from ..utils import (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class NRKBaseIE(InfoExtractor):
|
|
|
|
class NRKBaseIE(InfoExtractor):
|
|
|
|
def _extract_formats(self, manifest_url, video_id, fatal=True):
|
|
|
|
|
|
|
|
formats = []
|
|
|
|
|
|
|
|
formats.extend(self._extract_f4m_formats(
|
|
|
|
|
|
|
|
manifest_url + '?hdcore=3.5.0&plugin=aasp-3.5.0.151.81',
|
|
|
|
|
|
|
|
video_id, f4m_id='hds', fatal=fatal))
|
|
|
|
|
|
|
|
formats.extend(self._extract_m3u8_formats(manifest_url.replace(
|
|
|
|
|
|
|
|
'akamaihd.net/z/', 'akamaihd.net/i/').replace('/manifest.f4m', '/master.m3u8'),
|
|
|
|
|
|
|
|
video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=fatal))
|
|
|
|
|
|
|
|
return formats
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
|
video_id = self._match_id(url)
|
|
|
|
video_id = self._match_id(url)
|
|
|
|
|
|
|
|
|
|
|
@ -45,7 +35,7 @@ class NRKBaseIE(InfoExtractor):
|
|
|
|
asset_url = asset.get('url')
|
|
|
|
asset_url = asset.get('url')
|
|
|
|
if not asset_url:
|
|
|
|
if not asset_url:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
formats = self._extract_formats(asset_url, video_id, fatal=False)
|
|
|
|
formats = self._extract_akamai_formats(asset_url, video_id)
|
|
|
|
if not formats:
|
|
|
|
if not formats:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
self._sort_formats(formats)
|
|
|
|
self._sort_formats(formats)
|
|
|
@ -69,7 +59,7 @@ class NRKBaseIE(InfoExtractor):
|
|
|
|
if not entries:
|
|
|
|
if not entries:
|
|
|
|
media_url = data.get('mediaUrl')
|
|
|
|
media_url = data.get('mediaUrl')
|
|
|
|
if media_url:
|
|
|
|
if media_url:
|
|
|
|
formats = self._extract_formats(media_url, video_id)
|
|
|
|
formats = self._extract_akamai_formats(media_url, video_id)
|
|
|
|
self._sort_formats(formats)
|
|
|
|
self._sort_formats(formats)
|
|
|
|
duration = parse_duration(data.get('duration'))
|
|
|
|
duration = parse_duration(data.get('duration'))
|
|
|
|
entries = [{
|
|
|
|
entries = [{
|
|
|
|