[zdf] fix rtmpt format downloading handle errors

This commit is contained in:
remitamine 2016-01-02 21:24:57 +01:00
parent 141a273a8b
commit 6b46102661

View file

@ -13,6 +13,7 @@
determine_ext, determine_ext,
qualities, qualities,
float_or_none, float_or_none,
ExtractorError,
) )
@ -59,7 +60,6 @@ def _parse_smil_formats(self, smil, smil_url, video_id, namespace=None, f4m_para
'ext': 'flv', 'ext': 'flv',
'format_id': '%s-%d' % (proto, bitrate), 'format_id': '%s-%d' % (proto, bitrate),
'tbr': bitrate, 'tbr': bitrate,
'protocol': proto,
}) })
self._sort_formats(formats) self._sort_formats(formats)
return formats return formats
@ -70,6 +70,15 @@ def extract_from_xml_url(self, video_id, xml_url):
note='Downloading video info', note='Downloading video info',
errnote='Failed to download video info') errnote='Failed to download video info')
status_code = doc.find('./status/statuscode')
if status_code is not None and status_code.text != 'ok':
code = status_code.text
if code == 'notVisibleAnymore':
message = 'Video %s is not available' % video_id
else:
message = '%s returned error: %s' % (self.IE_NAME, code)
raise ExtractorError(message, expected=True)
title = doc.find('.//information/title').text title = doc.find('.//information/title').text
description = xpath_text(doc, './/information/detail', 'description') description = xpath_text(doc, './/information/detail', 'description')
duration = int_or_none(xpath_text(doc, './/details/lengthSec', 'duration')) duration = int_or_none(xpath_text(doc, './/details/lengthSec', 'duration'))
@ -129,10 +138,10 @@ def get_quality(elem):
video_url, video_id, fatal=False)) video_url, video_id, fatal=False))
elif ext == 'm3u8': elif ext == 'm3u8':
formats.extend(self._extract_m3u8_formats( formats.extend(self._extract_m3u8_formats(
video_url, video_id, 'mp4', m3u8_id='hls', fatal=False)) video_url, video_id, 'mp4', m3u8_id=format_id, fatal=False))
elif ext == 'f4m': elif ext == 'f4m':
formats.extend(self._extract_f4m_formats( formats.extend(self._extract_f4m_formats(
video_url, video_id, f4m_id='hds', fatal=False)) video_url, video_id, f4m_id=format_id, fatal=False))
else: else:
proto = format_m.group('proto').lower() proto = format_m.group('proto').lower()