|
|
@ -21,6 +21,10 @@ class KetnetIE(InfoExtractor):
|
|
|
|
}, {
|
|
|
|
}, {
|
|
|
|
'url': 'https://www.ketnet.be/achter-de-schermen/sien-repeteert-voor-stars-for-life',
|
|
|
|
'url': 'https://www.ketnet.be/achter-de-schermen/sien-repeteert-voor-stars-for-life',
|
|
|
|
'only_matching': True,
|
|
|
|
'only_matching': True,
|
|
|
|
|
|
|
|
}, {
|
|
|
|
|
|
|
|
# mzsource, geo restricted to Belgium
|
|
|
|
|
|
|
|
'url': 'https://www.ketnet.be/kijken/nachtwacht/de-bermadoe',
|
|
|
|
|
|
|
|
'only_matching': True,
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
@ -36,9 +40,25 @@ class KetnetIE(InfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
title = config['title']
|
|
|
|
title = config['title']
|
|
|
|
|
|
|
|
|
|
|
|
formats = self._extract_m3u8_formats(
|
|
|
|
formats = []
|
|
|
|
config['source']['hls'], video_id, 'mp4',
|
|
|
|
for source_key in ('', 'mz'):
|
|
|
|
entry_protocol='m3u8_native', m3u8_id='hls')
|
|
|
|
source = config.get('%ssource' % source_key)
|
|
|
|
|
|
|
|
if not isinstance(source, dict):
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
for format_id, format_url in source.items():
|
|
|
|
|
|
|
|
if format_id == 'hls':
|
|
|
|
|
|
|
|
formats.extend(self._extract_m3u8_formats(
|
|
|
|
|
|
|
|
format_url, video_id, 'mp4',
|
|
|
|
|
|
|
|
entry_protocol='m3u8_native', m3u8_id=format_id,
|
|
|
|
|
|
|
|
fatal=False))
|
|
|
|
|
|
|
|
elif format_id == 'hds':
|
|
|
|
|
|
|
|
formats.extend(self._extract_f4m_formats(
|
|
|
|
|
|
|
|
format_url, video_id, f4m_id=format_id, fatal=False))
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
formats.append({
|
|
|
|
|
|
|
|
'url': format_url,
|
|
|
|
|
|
|
|
'format_id': format_id,
|
|
|
|
|
|
|
|
})
|
|
|
|
self._sort_formats(formats)
|
|
|
|
self._sort_formats(formats)
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|