|
@ -181,10 +181,7 @@ class NPOIE(NPOBaseIE): |
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
|
try: |
|
|
|
|
|
return self._get_info(url, video_id) |
|
|
|
|
|
except ExtractorError: |
|
|
|
|
|
return self._get_old_info(video_id) |
|
|
|
|
|
|
|
|
return self._get_info(url, video_id) or self._get_old_info(video_id) |
|
|
|
|
|
|
|
|
def _get_info(self, url, video_id): |
|
|
def _get_info(self, url, video_id): |
|
|
token = self._download_json( |
|
|
token = self._download_json( |
|
@ -206,6 +203,7 @@ class NPOIE(NPOBaseIE): |
|
|
|
|
|
|
|
|
player_token = player['token'] |
|
|
player_token = player['token'] |
|
|
|
|
|
|
|
|
|
|
|
drm = False |
|
|
format_urls = set() |
|
|
format_urls = set() |
|
|
formats = [] |
|
|
formats = [] |
|
|
for profile in ('hls', 'dash-widevine', 'dash-playready', 'smooth'): |
|
|
for profile in ('hls', 'dash-widevine', 'dash-playready', 'smooth'): |
|
@ -227,7 +225,8 @@ class NPOIE(NPOBaseIE): |
|
|
if not stream_url or stream_url in format_urls: |
|
|
if not stream_url or stream_url in format_urls: |
|
|
continue |
|
|
continue |
|
|
format_urls.add(stream_url) |
|
|
format_urls.add(stream_url) |
|
|
if stream.get('protection') is not None: |
|
|
|
|
|
|
|
|
if stream.get('protection') is not None or stream.get('keySystemOptions') is not None: |
|
|
|
|
|
drm = True |
|
|
continue |
|
|
continue |
|
|
stream_type = stream.get('type') |
|
|
stream_type = stream.get('type') |
|
|
stream_ext = determine_ext(stream_url) |
|
|
stream_ext = determine_ext(stream_url) |
|
@ -246,6 +245,11 @@ class NPOIE(NPOBaseIE): |
|
|
'url': stream_url, |
|
|
'url': stream_url, |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
if not formats: |
|
|
|
|
|
if drm: |
|
|
|
|
|
raise ExtractorError('This video is DRM protected.', expected=True) |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
self._sort_formats(formats) |
|
|
self._sort_formats(formats) |
|
|
|
|
|
|
|
|
info = { |
|
|
info = { |
|
|