mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:25:15 +00:00 
			
		
		
		
	@@ -2998,19 +2998,29 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
 | 
				
			|||||||
                return self.url_result(video_id, ie=YoutubeIE.ie_key(), video_id=video_id)
 | 
					                return self.url_result(video_id, ie=YoutubeIE.ie_key(), video_id=video_id)
 | 
				
			||||||
            self.to_screen('Downloading playlist %s - add --no-playlist to just download video %s' % (playlist_id, video_id))
 | 
					            self.to_screen('Downloading playlist %s - add --no-playlist to just download video %s' % (playlist_id, video_id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        webpage = self._download_webpage(url, item_id)
 | 
					        count = 0
 | 
				
			||||||
        identity_token = self._extract_identity_token(webpage, item_id)
 | 
					        retries = 3
 | 
				
			||||||
        data = self._extract_yt_initial_data(item_id, webpage)
 | 
					        while count < retries:
 | 
				
			||||||
        err_msg = None
 | 
					            # Sometimes youtube returns a webpage with incomplete ytInitialData
 | 
				
			||||||
        for alert_type, alert_message in self._extract_alerts(data):
 | 
					            webpage = self._download_webpage(url, item_id)
 | 
				
			||||||
            if alert_type.lower() == 'error':
 | 
					            identity_token = self._extract_identity_token(webpage, item_id)
 | 
				
			||||||
                if err_msg:
 | 
					            data = self._extract_yt_initial_data(item_id, webpage)
 | 
				
			||||||
                    self._downloader.report_warning('YouTube said: %s - %s' % ('ERROR', err_msg))
 | 
					            err_msg = None
 | 
				
			||||||
                err_msg = alert_message
 | 
					            for alert_type, alert_message in self._extract_alerts(data):
 | 
				
			||||||
            else:
 | 
					                if alert_type.lower() == 'error':
 | 
				
			||||||
                self._downloader.report_warning('YouTube said: %s - %s' % (alert_type, alert_message))
 | 
					                    if err_msg:
 | 
				
			||||||
        if err_msg:
 | 
					                        self._downloader.report_warning('YouTube said: %s - %s' % ('ERROR', err_msg))
 | 
				
			||||||
            raise ExtractorError('YouTube said: %s' % err_msg, expected=True)
 | 
					                    err_msg = alert_message
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    self._downloader.report_warning('YouTube said: %s - %s' % (alert_type, alert_message))
 | 
				
			||||||
 | 
					            if err_msg:
 | 
				
			||||||
 | 
					                raise ExtractorError('YouTube said: %s' % err_msg, expected=True)
 | 
				
			||||||
 | 
					            if data.get('contents') or data.get('currentVideoEndpoint'):
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            count += 1
 | 
				
			||||||
 | 
					            self.to_screen(
 | 
				
			||||||
 | 
					                'Incomplete yt initial data recieved. Retrying (attempt %d of %d)...' % (count, retries))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        tabs = try_get(
 | 
					        tabs = try_get(
 | 
				
			||||||
            data, lambda x: x['contents']['twoColumnBrowseResultsRenderer']['tabs'], list)
 | 
					            data, lambda x: x['contents']['twoColumnBrowseResultsRenderer']['tabs'], list)
 | 
				
			||||||
        if tabs:
 | 
					        if tabs:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user