mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[4tube] Try extracting sources from the webpage before fetching player.js (Closes #7103)
This commit is contained in:
		@@ -68,16 +68,21 @@ class FourTubeIE(InfoExtractor):
 | 
				
			|||||||
            webpage, 'like count', fatal=False))
 | 
					            webpage, 'like count', fatal=False))
 | 
				
			||||||
        duration = parse_duration(self._html_search_meta('duration', webpage))
 | 
					        duration = parse_duration(self._html_search_meta('duration', webpage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        media_id = self._search_regex(
 | 
				
			||||||
 | 
					            r'<button[^>]+data-id=(["\'])(?P<id>\d+)\1[^>]+data-quality=', webpage,
 | 
				
			||||||
 | 
					            'media id', default=None, group='id')
 | 
				
			||||||
 | 
					        sources = [
 | 
				
			||||||
 | 
					            quality
 | 
				
			||||||
 | 
					            for _, quality in re.findall(r'<button[^>]+data-quality=(["\'])(.+?)\1', webpage)]
 | 
				
			||||||
 | 
					        if not (media_id and sources):
 | 
				
			||||||
            player_js = self._download_webpage(
 | 
					            player_js = self._download_webpage(
 | 
				
			||||||
                self._search_regex(
 | 
					                self._search_regex(
 | 
				
			||||||
                    r'<script[^>]id=(["\'])playerembed\1[^>]+src=(["\'])(?P<url>.+?)\2',
 | 
					                    r'<script[^>]id=(["\'])playerembed\1[^>]+src=(["\'])(?P<url>.+?)\2',
 | 
				
			||||||
                    webpage, 'player JS', group='url'),
 | 
					                    webpage, 'player JS', group='url'),
 | 
				
			||||||
                video_id, 'Downloading player JS')
 | 
					                video_id, 'Downloading player JS')
 | 
				
			||||||
 | 
					 | 
				
			||||||
            params_js = self._search_regex(
 | 
					            params_js = self._search_regex(
 | 
				
			||||||
                r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)',
 | 
					                r'\$\.ajax\(url,\ opts\);\s*\}\s*\}\)\(([0-9,\[\] ]+)\)',
 | 
				
			||||||
            player_js, 'initialization parameters'
 | 
					                player_js, 'initialization parameters')
 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
            params = self._parse_json('[%s]' % params_js, video_id)
 | 
					            params = self._parse_json('[%s]' % params_js, video_id)
 | 
				
			||||||
            media_id = params[0]
 | 
					            media_id = params[0]
 | 
				
			||||||
            sources = ['%s' % p for p in params[2]]
 | 
					            sources = ['%s' % p for p in params[2]]
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user