[twitter] Support HLS streams in vmap URLs
This commit is contained in:
parent
7f176ac477
commit
9be31e771c
|
@ -1,6 +1,7 @@
|
||||||
version <unreleased>
|
version <unreleased>
|
||||||
|
|
||||||
Extractors
|
Extractors
|
||||||
|
+ [twitter] Support HLS streams in vmap URLs
|
||||||
+ [periscope] Support pscp.tv URLs in embedded frames
|
+ [periscope] Support pscp.tv URLs in embedded frames
|
||||||
* [niconico] Fix authentication error handling (#12486)
|
* [niconico] Fix authentication error handling (#12486)
|
||||||
* [giantbomb] Extract m3u8 formats (#13626)
|
* [giantbomb] Extract m3u8 formats (#13626)
|
||||||
|
|
|
@ -20,9 +20,16 @@ from .periscope import PeriscopeIE
|
||||||
|
|
||||||
|
|
||||||
class TwitterBaseIE(InfoExtractor):
|
class TwitterBaseIE(InfoExtractor):
|
||||||
def _get_vmap_video_url(self, vmap_url, video_id):
|
def _extract_formats_from_vmap_url(self, vmap_url, video_id):
|
||||||
vmap_data = self._download_xml(vmap_url, video_id)
|
vmap_data = self._download_xml(vmap_url, video_id)
|
||||||
return xpath_text(vmap_data, './/MediaFile').strip()
|
video_url = xpath_text(vmap_data, './/MediaFile').strip()
|
||||||
|
if determine_ext(video_url) == 'm3u8':
|
||||||
|
return self._extract_m3u8_formats(
|
||||||
|
video_url, video_id, ext='mp4', m3u8_id='hls',
|
||||||
|
entry_protocol='m3u8_native')
|
||||||
|
return [{
|
||||||
|
'url': video_url,
|
||||||
|
}]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _search_dimensions_in_video_url(a_format, video_url):
|
def _search_dimensions_in_video_url(a_format, video_url):
|
||||||
|
@ -197,9 +204,8 @@ class TwitterCardIE(TwitterBaseIE):
|
||||||
|
|
||||||
vmap_url = config.get('vmapUrl') or config.get('vmap_url')
|
vmap_url = config.get('vmapUrl') or config.get('vmap_url')
|
||||||
if vmap_url:
|
if vmap_url:
|
||||||
formats.append({
|
formats.extend(
|
||||||
'url': self._get_vmap_video_url(vmap_url, video_id),
|
self._extract_formats_from_vmap_url(vmap_url, video_id))
|
||||||
})
|
|
||||||
|
|
||||||
media_info = None
|
media_info = None
|
||||||
|
|
||||||
|
@ -449,7 +455,7 @@ class TwitterAmplifyIE(TwitterBaseIE):
|
||||||
|
|
||||||
vmap_url = self._html_search_meta(
|
vmap_url = self._html_search_meta(
|
||||||
'twitter:amplify:vmap', webpage, 'vmap url')
|
'twitter:amplify:vmap', webpage, 'vmap url')
|
||||||
video_url = self._get_vmap_video_url(vmap_url, video_id)
|
formats = self._extract_formats_from_vmap_url(vmap_url, video_id)
|
||||||
|
|
||||||
thumbnails = []
|
thumbnails = []
|
||||||
thumbnail = self._html_search_meta(
|
thumbnail = self._html_search_meta(
|
||||||
|
@ -471,11 +477,10 @@ class TwitterAmplifyIE(TwitterBaseIE):
|
||||||
})
|
})
|
||||||
|
|
||||||
video_w, video_h = _find_dimension('player')
|
video_w, video_h = _find_dimension('player')
|
||||||
formats = [{
|
formats[0].update({
|
||||||
'url': video_url,
|
|
||||||
'width': video_w,
|
'width': video_w,
|
||||||
'height': video_h,
|
'height': video_h,
|
||||||
}]
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
|
|
Loading…
Reference in New Issue