mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Avoid recursion error when re-extracting info
This commit is contained in:
		| @@ -1348,31 +1348,33 @@ class YoutubeDL(object): | ||||
|     def __handle_extraction_exceptions(func): | ||||
|         @functools.wraps(func) | ||||
|         def wrapper(self, *args, **kwargs): | ||||
|             try: | ||||
|                 return func(self, *args, **kwargs) | ||||
|             except GeoRestrictedError as e: | ||||
|                 msg = e.msg | ||||
|                 if e.countries: | ||||
|                     msg += '\nThis video is available in %s.' % ', '.join( | ||||
|                         map(ISO3166Utils.short2full, e.countries)) | ||||
|                 msg += '\nYou might want to use a VPN or a proxy server (with --proxy) to workaround.' | ||||
|                 self.report_error(msg) | ||||
|             except ExtractorError as e:  # An error we somewhat expected | ||||
|                 self.report_error(compat_str(e), e.format_traceback()) | ||||
|             except ReExtractInfo as e: | ||||
|                 if e.expected: | ||||
|                     self.to_screen(f'{e}; Re-extracting data') | ||||
|                 else: | ||||
|                     self.to_stderr('\r') | ||||
|                     self.report_warning(f'{e}; Re-extracting data') | ||||
|                 return wrapper(self, *args, **kwargs) | ||||
|             except (DownloadCancelled, LazyList.IndexError, PagedList.IndexError): | ||||
|                 raise | ||||
|             except Exception as e: | ||||
|                 if self.params.get('ignoreerrors'): | ||||
|                     self.report_error(error_to_compat_str(e), tb=encode_compat_str(traceback.format_exc())) | ||||
|                 else: | ||||
|             while True: | ||||
|                 try: | ||||
|                     return func(self, *args, **kwargs) | ||||
|                 except (DownloadCancelled, LazyList.IndexError, PagedList.IndexError): | ||||
|                     raise | ||||
|                 except ReExtractInfo as e: | ||||
|                     if e.expected: | ||||
|                         self.to_screen(f'{e}; Re-extracting data') | ||||
|                     else: | ||||
|                         self.to_stderr('\r') | ||||
|                         self.report_warning(f'{e}; Re-extracting data') | ||||
|                     continue | ||||
|                 except GeoRestrictedError as e: | ||||
|                     msg = e.msg | ||||
|                     if e.countries: | ||||
|                         msg += '\nThis video is available in %s.' % ', '.join( | ||||
|                             map(ISO3166Utils.short2full, e.countries)) | ||||
|                     msg += '\nYou might want to use a VPN or a proxy server (with --proxy) to workaround.' | ||||
|                     self.report_error(msg) | ||||
|                 except ExtractorError as e:  # An error we somewhat expected | ||||
|                     self.report_error(str(e), e.format_traceback()) | ||||
|                 except Exception as e: | ||||
|                     if self.params.get('ignoreerrors'): | ||||
|                         self.report_error(str(e), tb=encode_compat_str(traceback.format_exc())) | ||||
|                     else: | ||||
|                         raise | ||||
|                 break | ||||
|         return wrapper | ||||
|  | ||||
|     def _wait_for_video(self, ie_result): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan