|
|
@ -13,6 +13,7 @@ from ..utils import ( |
|
|
|
determine_ext, |
|
|
|
qualities, |
|
|
|
float_or_none, |
|
|
|
ExtractorError, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
@ -59,7 +60,6 @@ class ZDFIE(InfoExtractor): |
|
|
|
'ext': 'flv', |
|
|
|
'format_id': '%s-%d' % (proto, bitrate), |
|
|
|
'tbr': bitrate, |
|
|
|
'protocol': proto, |
|
|
|
}) |
|
|
|
self._sort_formats(formats) |
|
|
|
return formats |
|
|
@ -70,6 +70,15 @@ class ZDFIE(InfoExtractor): |
|
|
|
note='Downloading 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 |
|
|
|
description = xpath_text(doc, './/information/detail', 'description') |
|
|
|
duration = int_or_none(xpath_text(doc, './/details/lengthSec', 'duration')) |
|
|
@ -129,10 +138,10 @@ class ZDFIE(InfoExtractor): |
|
|
|
video_url, video_id, fatal=False)) |
|
|
|
elif ext == 'm3u8': |
|
|
|
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': |
|
|
|
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: |
|
|
|
proto = format_m.group('proto').lower() |
|
|
|
|
|
|
|