mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[youtube] Extract error messages from HTTPError response (#644)
Authored by: coletdjnz
This commit is contained in:
		| @@ -38,6 +38,7 @@ from ..utils import ( | ||||
|     format_field, | ||||
|     int_or_none, | ||||
|     intlist_to_bytes, | ||||
|     is_html, | ||||
|     mimetype2ext, | ||||
|     network_exceptions, | ||||
|     orderedSet, | ||||
| @@ -723,11 +724,11 @@ class YoutubeBaseInfoExtractor(InfoExtractor): | ||||
|                 if message: | ||||
|                     yield alert_type, message | ||||
|  | ||||
|     def _report_alerts(self, alerts, expected=True): | ||||
|     def _report_alerts(self, alerts, expected=True, fatal=True): | ||||
|         errors = [] | ||||
|         warnings = [] | ||||
|         for alert_type, alert_message in alerts: | ||||
|             if alert_type.lower() == 'error': | ||||
|             if alert_type.lower() == 'error' and fatal: | ||||
|                 errors.append([alert_type, alert_message]) | ||||
|             else: | ||||
|                 warnings.append([alert_type, alert_message]) | ||||
| @@ -793,6 +794,13 @@ class YoutubeBaseInfoExtractor(InfoExtractor): | ||||
|                     note='%s%s' % (note, ' (retry #%d)' % count if count else '')) | ||||
|             except ExtractorError as e: | ||||
|                 if isinstance(e.cause, network_exceptions): | ||||
|                     if isinstance(e.cause, compat_HTTPError) and not is_html(e.cause.read(512)): | ||||
|                         e.cause.seek(0) | ||||
|                         yt_error = try_get( | ||||
|                             self._parse_json(e.cause.read().decode(), item_id, fatal=False), | ||||
|                             lambda x: x['error']['message'], compat_str) | ||||
|                         if yt_error: | ||||
|                             self._report_alerts([('ERROR', yt_error)], fatal=False) | ||||
|                     # Downloading page may result in intermittent 5xx HTTP error | ||||
|                     # Sometimes a 404 is also recieved. See: https://github.com/ytdl-org/youtube-dl/issues/28289 | ||||
|                     # We also want to catch all other network exceptions since errors in later pages can be troublesome | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 coletdjnz
					coletdjnz