import re
from .common import InfoExtractor
+from ..compat import compat_str
from ..utils import (
+ determine_ext,
mimetype2ext,
qualities,
remove_end,
video_info_list = format_info.get('videoInfoList')
if not video_info_list or not isinstance(video_info_list, list):
continue
- video_info = video_info_list[0]
- if not video_info or not isinstance(video_info, dict):
- continue
- video_url = video_info.get('videoUrl')
- if not video_url:
- continue
- format_id = format_info.get('ffname')
- formats.append({
- 'format_id': format_id,
- 'url': video_url,
- 'ext': mimetype2ext(video_info.get('videoMimeType')),
- 'quality': quality(format_id),
- })
+ for video_info in video_info_list:
+ if not video_info or not isinstance(video_info, dict):
+ continue
+ video_url = video_info.get('videoUrl')
+ if not video_url or not isinstance(video_url, compat_str):
+ continue
+ if (video_info.get('videoMimeType') == 'application/x-mpegURL' or
+ determine_ext(video_url) == 'm3u8'):
+ formats.extend(self._extract_m3u8_formats(
+ video_url, video_id, 'mp4', entry_protocol='m3u8_native',
+ m3u8_id='hls', fatal=False))
+ continue
+ format_id = format_info.get('ffname')
+ formats.append({
+ 'format_id': format_id,
+ 'url': video_url,
+ 'ext': mimetype2ext(video_info.get('videoMimeType')),
+ 'quality': quality(format_id),
+ })
self._sort_formats(formats)
return {