|
@ -307,9 +307,10 @@ class BrightcoveLegacyIE(InfoExtractor): |
|
|
playlist_title=playlist_info['mediaCollectionDTO']['displayName']) |
|
|
playlist_title=playlist_info['mediaCollectionDTO']['displayName']) |
|
|
|
|
|
|
|
|
def _extract_video_info(self, video_info): |
|
|
def _extract_video_info(self, video_info): |
|
|
|
|
|
video_id = compat_str(video_info['id']) |
|
|
publisher_id = video_info.get('publisherId') |
|
|
publisher_id = video_info.get('publisherId') |
|
|
info = { |
|
|
info = { |
|
|
'id': compat_str(video_info['id']), |
|
|
|
|
|
|
|
|
'id': video_id, |
|
|
'title': video_info['displayName'].strip(), |
|
|
'title': video_info['displayName'].strip(), |
|
|
'description': video_info.get('shortDescription'), |
|
|
'description': video_info.get('shortDescription'), |
|
|
'thumbnail': video_info.get('videoStillURL') or video_info.get('thumbnailURL'), |
|
|
'thumbnail': video_info.get('videoStillURL') or video_info.get('thumbnailURL'), |
|
@ -331,7 +332,8 @@ class BrightcoveLegacyIE(InfoExtractor): |
|
|
url_comp = compat_urllib_parse_urlparse(url) |
|
|
url_comp = compat_urllib_parse_urlparse(url) |
|
|
if url_comp.path.endswith('.m3u8'): |
|
|
if url_comp.path.endswith('.m3u8'): |
|
|
formats.extend( |
|
|
formats.extend( |
|
|
self._extract_m3u8_formats(url, info['id'], 'mp4')) |
|
|
|
|
|
|
|
|
self._extract_m3u8_formats( |
|
|
|
|
|
url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)) |
|
|
continue |
|
|
continue |
|
|
elif 'akamaihd.net' in url_comp.netloc: |
|
|
elif 'akamaihd.net' in url_comp.netloc: |
|
|
# This type of renditions are served through |
|
|
# This type of renditions are served through |
|
@ -365,7 +367,7 @@ class BrightcoveLegacyIE(InfoExtractor): |
|
|
a_format.update({ |
|
|
a_format.update({ |
|
|
'format_id': 'hls%s' % ('-%s' % tbr if tbr else ''), |
|
|
'format_id': 'hls%s' % ('-%s' % tbr if tbr else ''), |
|
|
'ext': 'mp4', |
|
|
'ext': 'mp4', |
|
|
'protocol': 'm3u8', |
|
|
|
|
|
|
|
|
'protocol': 'm3u8_native', |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
formats.append(a_format) |
|
|
formats.append(a_format) |
|
@ -395,7 +397,7 @@ class BrightcoveLegacyIE(InfoExtractor): |
|
|
return ad_info |
|
|
return ad_info |
|
|
|
|
|
|
|
|
if 'url' not in info and not info.get('formats'): |
|
|
if 'url' not in info and not info.get('formats'): |
|
|
raise ExtractorError('Unable to extract video url for %s' % info['id']) |
|
|
|
|
|
|
|
|
raise ExtractorError('Unable to extract video url for %s' % video_id) |
|
|
return info |
|
|
return info |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -527,7 +529,7 @@ class BrightcoveNewIE(InfoExtractor): |
|
|
if not src: |
|
|
if not src: |
|
|
continue |
|
|
continue |
|
|
formats.extend(self._extract_m3u8_formats( |
|
|
formats.extend(self._extract_m3u8_formats( |
|
|
src, video_id, 'mp4', m3u8_id='hls', fatal=False)) |
|
|
|
|
|
|
|
|
src, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)) |
|
|
elif source_type == 'application/dash+xml': |
|
|
elif source_type == 'application/dash+xml': |
|
|
if not src: |
|
|
if not src: |
|
|
continue |
|
|
continue |
|
|