mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[youtube] Extract precise error messages (closes #15284)
This commit is contained in:
		| @@ -1596,6 +1596,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|                         if 'token' not in video_info: | ||||
|                             video_info = get_video_info | ||||
|                         break | ||||
|  | ||||
|         def extract_unavailable_message(): | ||||
|             return self._html_search_regex( | ||||
|                 r'(?s)<h1[^>]+id="unavailable-message"[^>]*>(.+?)</h1>', | ||||
|                 video_webpage, 'unavailable message', default=None) | ||||
|  | ||||
|         if 'token' not in video_info: | ||||
|             if 'reason' in video_info: | ||||
|                 if 'The uploader has not made this video available in your country.' in video_info['reason']: | ||||
| @@ -1604,8 +1610,13 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|                     countries = regions_allowed.split(',') if regions_allowed else None | ||||
|                     self.raise_geo_restricted( | ||||
|                         msg=video_info['reason'][0], countries=countries) | ||||
|                 reason = video_info['reason'][0] | ||||
|                 if 'Invalid parameters' in reason: | ||||
|                     unavailable_message = extract_unavailable_message() | ||||
|                     if unavailable_message: | ||||
|                         reason = unavailable_message | ||||
|                 raise ExtractorError( | ||||
|                     'YouTube said: %s' % video_info['reason'][0], | ||||
|                     'YouTube said: %s' % reason, | ||||
|                     expected=True, video_id=video_id) | ||||
|             else: | ||||
|                 raise ExtractorError( | ||||
| @@ -1953,9 +1964,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|                 a_format.setdefault('http_headers', {})['Youtubedl-no-compression'] = 'True' | ||||
|                 formats.append(a_format) | ||||
|         else: | ||||
|             unavailable_message = self._html_search_regex( | ||||
|                 r'(?s)<h1[^>]+id="unavailable-message"[^>]*>(.+?)</h1>', | ||||
|                 video_webpage, 'unavailable message', default=None) | ||||
|             unavailable_message = extract_unavailable_message() | ||||
|             if unavailable_message: | ||||
|                 raise ExtractorError(unavailable_message, expected=True) | ||||
|             raise ExtractorError('no conn, hlsvp or url_encoded_fmt_stream_map information found in video info') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yen Chi Hsuan
					Yen Chi Hsuan