display_id = mobj.group('display_id')
webpage = self._download_webpage(url, display_id)
- data_json = self._search_regex(r'window\.__APOLLO_STATE__\s*=\s*(\{.*);', webpage, 'json')
+ data_json = self._search_regex(r'window\.__APOLLO_STATE__\s*=\s*(\{.*);\n', webpage, 'json')
data = self._parse_json(data_json, display_id)
res = {
'url': widget['_subtitleUrl'],
}]}
if '_quality' in widget:
- formats.append({
- 'format_id': widget['_quality'],
- 'url': widget['_stream']['json'][0],
- })
+ format_url = widget['_stream']['json'][0]
+
+ if format_url.endswith('.f4m'):
+ formats.extend(self._extract_f4m_formats(
+ format_url + '?hdcore=3.11.0',
+ video_id, f4m_id='hds', fatal=False))
+ elif format_url.endswith('m3u8'):
+ formats.extend(self._extract_m3u8_formats(
+ format_url, video_id, 'mp4', m3u8_id='hls', fatal=False))
+ else:
+ formats.append({
+ 'format_id': 'http-' + widget['_quality'],
+ 'url': format_url,
+ 'preference': 10, # Plain HTTP, that's nice
+ })
self._sort_formats(formats)
res['formats'] = formats