[twitter] Support HLS streams in vmap URLs
This commit is contained in:
		
							parent
							
								
									7f176ac477
								
							
						
					
					
						commit
						9be31e771c
					
				
					 2 changed files with 15 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
version <unreleased>
 | 
			
		||||
 | 
			
		||||
Extractors
 | 
			
		||||
+ [twitter] Support HLS streams in vmap URLs
 | 
			
		||||
+ [periscope] Support pscp.tv URLs in embedded frames
 | 
			
		||||
* [niconico] Fix authentication error handling (#12486)
 | 
			
		||||
* [giantbomb] Extract m3u8 formats (#13626)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,9 +20,16 @@ from .periscope import PeriscopeIE
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
        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
 | 
			
		||||
    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')
 | 
			
		||||
        if vmap_url:
 | 
			
		||||
            formats.append({
 | 
			
		||||
                'url': self._get_vmap_video_url(vmap_url, video_id),
 | 
			
		||||
            })
 | 
			
		||||
            formats.extend(
 | 
			
		||||
                self._extract_formats_from_vmap_url(vmap_url, video_id))
 | 
			
		||||
 | 
			
		||||
        media_info = None
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -449,7 +455,7 @@ class TwitterAmplifyIE(TwitterBaseIE):
 | 
			
		|||
 | 
			
		||||
        vmap_url = self._html_search_meta(
 | 
			
		||||
            '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 = []
 | 
			
		||||
        thumbnail = self._html_search_meta(
 | 
			
		||||
| 
						 | 
				
			
			@ -471,11 +477,10 @@ class TwitterAmplifyIE(TwitterBaseIE):
 | 
			
		|||
            })
 | 
			
		||||
 | 
			
		||||
        video_w, video_h = _find_dimension('player')
 | 
			
		||||
        formats = [{
 | 
			
		||||
            'url': video_url,
 | 
			
		||||
        formats[0].update({
 | 
			
		||||
            'width': video_w,
 | 
			
		||||
            'height': video_h,
 | 
			
		||||
        }]
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            'id': video_id,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue