|
|
|
@ -2332,12 +2332,23 @@ class GenericIE(InfoExtractor):
|
|
|
|
|
info_dict.update(json_ld)
|
|
|
|
|
return info_dict
|
|
|
|
|
|
|
|
|
|
# Look for HTML5 media
|
|
|
|
|
entries = self._parse_html5_media_entries(url, webpage, video_id, m3u8_id='hls')
|
|
|
|
|
if entries:
|
|
|
|
|
for entry in entries:
|
|
|
|
|
entry.update({
|
|
|
|
|
'id': video_id,
|
|
|
|
|
'title': video_title,
|
|
|
|
|
})
|
|
|
|
|
self._sort_formats(entry['formats'])
|
|
|
|
|
return self.playlist_result(entries)
|
|
|
|
|
|
|
|
|
|
def check_video(vurl):
|
|
|
|
|
if YoutubeIE.suitable(vurl):
|
|
|
|
|
return True
|
|
|
|
|
vpath = compat_urlparse.urlparse(vurl).path
|
|
|
|
|
vext = determine_ext(vpath)
|
|
|
|
|
return '.' in vpath and vext not in ('swf', 'png', 'jpg', 'srt', 'sbv', 'sub', 'vtt', 'ttml')
|
|
|
|
|
return '.' in vpath and vext not in ('swf', 'png', 'jpg', 'srt', 'sbv', 'sub', 'vtt', 'ttml', 'js')
|
|
|
|
|
|
|
|
|
|
def filter_video(urls):
|
|
|
|
|
return list(filter(check_video, urls))
|
|
|
|
@ -2387,9 +2398,6 @@ class GenericIE(InfoExtractor):
|
|
|
|
|
# We only look in og:video if the MIME type is a video, don't try if it's a Flash player:
|
|
|
|
|
if m_video_type is not None:
|
|
|
|
|
found = filter_video(re.findall(r'<meta.*?property="og:video".*?content="(.*?)"', webpage))
|
|
|
|
|
if not found:
|
|
|
|
|
# HTML5 video
|
|
|
|
|
found = re.findall(r'(?s)<(?:video|audio)[^<]*(?:>.*?<source[^>]*)?\s+src=["\'](.*?)["\']', webpage)
|
|
|
|
|
if not found:
|
|
|
|
|
REDIRECT_REGEX = r'[0-9]{,2};\s*(?:URL|url)=\'?([^\'"]+)'
|
|
|
|
|
found = re.search(
|
|
|
|
|