mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	Merge pull request #2696 from anovicecodemonkey/support-ustream-embeds
[UstreamIE] [generic] Added support for Ustream embed URLs (Fixes #2694)
This commit is contained in:
		@@ -184,6 +184,17 @@ class GenericIE(InfoExtractor):
 | 
				
			|||||||
                'description': 'md5:ddb2a40ecd6b6a147e400e535874947b',
 | 
					                'description': 'md5:ddb2a40ecd6b6a147e400e535874947b',
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        # Embeded Ustream video
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            'url': 'http://www.american.edu/spa/pti/nsa-privacy-janus-2014.cfm',
 | 
				
			||||||
 | 
					            'md5': '27b99cdb639c9b12a79bca876a073417',
 | 
				
			||||||
 | 
					            'info_dict': {
 | 
				
			||||||
 | 
					                'id': '45734260',
 | 
				
			||||||
 | 
					                'ext': 'flv',
 | 
				
			||||||
 | 
					                'uploader': 'AU SPA:  The NSA and Privacy',
 | 
				
			||||||
 | 
					                'title': 'NSA and Privacy Forum Debate featuring General Hayden and Barton Gellman'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        # nowvideo embed hidden behind percent encoding
 | 
					        # nowvideo embed hidden behind percent encoding
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            'url': 'http://www.waoanime.tv/the-super-dimension-fortress-macross-episode-1/',
 | 
					            'url': 'http://www.waoanime.tv/the-super-dimension-fortress-macross-episode-1/',
 | 
				
			||||||
@@ -556,6 +567,12 @@ class GenericIE(InfoExtractor):
 | 
				
			|||||||
        if mobj is not None:
 | 
					        if mobj is not None:
 | 
				
			||||||
            return self.url_result(mobj.group('url'), 'TED')
 | 
					            return self.url_result(mobj.group('url'), 'TED')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Look for embedded Ustream videos
 | 
				
			||||||
 | 
					        mobj = re.search(
 | 
				
			||||||
 | 
					            r'<iframe[^>]+?src=(["\'])(?P<url>http://www\.ustream\.tv/embed/.+?)\1', webpage)
 | 
				
			||||||
 | 
					        if mobj is not None:
 | 
				
			||||||
 | 
					            return self.url_result(mobj.group('url'), 'Ustream')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Look for embedded arte.tv player
 | 
					        # Look for embedded arte.tv player
 | 
				
			||||||
        mobj = re.search(
 | 
					        mobj = re.search(
 | 
				
			||||||
            r'<script [^>]*?src="(?P<url>http://www\.arte\.tv/playerv2/embed[^"]+)"',
 | 
					            r'<script [^>]*?src="(?P<url>http://www\.arte\.tv/playerv2/embed[^"]+)"',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ from ..utils import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UstreamIE(InfoExtractor):
 | 
					class UstreamIE(InfoExtractor):
 | 
				
			||||||
    _VALID_URL = r'https?://www\.ustream\.tv/recorded/(?P<videoID>\d+)'
 | 
					    _VALID_URL = r'https?://www\.ustream\.tv/(?P<type>recorded|embed)/(?P<videoID>\d+)'
 | 
				
			||||||
    IE_NAME = 'ustream'
 | 
					    IE_NAME = 'ustream'
 | 
				
			||||||
    _TEST = {
 | 
					    _TEST = {
 | 
				
			||||||
        'url': 'http://www.ustream.tv/recorded/20274954',
 | 
					        'url': 'http://www.ustream.tv/recorded/20274954',
 | 
				
			||||||
@@ -25,6 +25,13 @@ class UstreamIE(InfoExtractor):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def _real_extract(self, url):
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
        m = re.match(self._VALID_URL, url)
 | 
					        m = re.match(self._VALID_URL, url)
 | 
				
			||||||
 | 
					        if m.group('type') == 'embed':
 | 
				
			||||||
 | 
					            video_id = m.group('videoID')
 | 
				
			||||||
 | 
					            webpage = self._download_webpage(url, video_id)
 | 
				
			||||||
 | 
					            desktop_video_id = self._html_search_regex(r'ContentVideoIds=\["([^"]*?)"\]', webpage, 'desktop_video_id')
 | 
				
			||||||
 | 
					            desktop_url = 'http://www.ustream.tv/recorded/' + desktop_video_id
 | 
				
			||||||
 | 
					            return self.url_result(desktop_url, 'Ustream')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        video_id = m.group('videoID')
 | 
					        video_id = m.group('videoID')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        video_url = 'http://tcdn.ustream.tv/video/%s' % video_id
 | 
					        video_url = 'http://tcdn.ustream.tv/video/%s' % video_id
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user