|
|
@ -3,6 +3,7 @@ from __future__ import unicode_literals |
|
|
|
import re |
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
|
from ..compat import compat_HTTPError |
|
|
|
from ..utils import ( |
|
|
|
fix_xml_ampersands, |
|
|
|
orderedSet, |
|
|
@ -10,6 +11,7 @@ from ..utils import ( |
|
|
|
qualities, |
|
|
|
strip_jsonp, |
|
|
|
unified_strdate, |
|
|
|
ExtractorError, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
@ -181,9 +183,16 @@ class NPOIE(NPOBaseIE): |
|
|
|
continue |
|
|
|
streams = format_info.get('streams') |
|
|
|
if streams: |
|
|
|
video_info = self._download_json( |
|
|
|
streams[0] + '&type=json', |
|
|
|
video_id, 'Downloading %s stream JSON' % format_id) |
|
|
|
try: |
|
|
|
video_info = self._download_json( |
|
|
|
streams[0] + '&type=json', |
|
|
|
video_id, 'Downloading %s stream JSON' % format_id) |
|
|
|
except ExtractorError as ee: |
|
|
|
if isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 404: |
|
|
|
error = (self._parse_json(ee.cause.read().decode(), video_id, fatal=False) or {}).get('errorstring') |
|
|
|
if error: |
|
|
|
raise ExtractorError(error, expected=True) |
|
|
|
raise |
|
|
|
else: |
|
|
|
video_info = format_info |
|
|
|
video_url = video_info.get('url') |
|
|
|