[livestream] Improve extraction (Closes #3513)
This commit is contained in:
		@@ -111,17 +111,28 @@ class LivestreamIE(InfoExtractor):
 | 
			
		||||
        event_name = mobj.group('event_name')
 | 
			
		||||
        webpage = self._download_webpage(url, video_id or event_name)
 | 
			
		||||
 | 
			
		||||
        if video_id is None:
 | 
			
		||||
            # This is an event page:
 | 
			
		||||
        og_video = self._og_search_video_url(webpage, 'player url', fatal=False, default=None)
 | 
			
		||||
        if og_video is None:
 | 
			
		||||
            config_json = self._search_regex(
 | 
			
		||||
                r'window.config = ({.*?});', webpage, 'window config')
 | 
			
		||||
            info = json.loads(config_json)['event']
 | 
			
		||||
 | 
			
		||||
            def is_relevant(vdata, vid):
 | 
			
		||||
                result = vdata['type'] == 'video'
 | 
			
		||||
                if video_id is not None:
 | 
			
		||||
                    result = result and compat_str(vdata['data']['id']) == vid
 | 
			
		||||
                return result
 | 
			
		||||
 | 
			
		||||
            videos = [self._extract_video_info(video_data['data'])
 | 
			
		||||
                for video_data in info['feed']['data']
 | 
			
		||||
                if video_data['type'] == 'video']
 | 
			
		||||
            return self.playlist_result(videos, info['id'], info['full_name'])
 | 
			
		||||
                      for video_data in info['feed']['data']
 | 
			
		||||
                      if is_relevant(video_data, video_id)]
 | 
			
		||||
            if video_id is None:
 | 
			
		||||
                # This is an event page:
 | 
			
		||||
                return self.playlist_result(videos, info['id'], info['full_name'])
 | 
			
		||||
            else:
 | 
			
		||||
                if videos:
 | 
			
		||||
                    return videos[0]
 | 
			
		||||
        else:
 | 
			
		||||
            og_video = self._og_search_video_url(webpage, 'player url')
 | 
			
		||||
            query_str = compat_urllib_parse_urlparse(og_video).query
 | 
			
		||||
            query = compat_urlparse.parse_qs(query_str)
 | 
			
		||||
            api_url = query['play_url'][0].replace('.smil', '')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user