mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[youtube] Raise GeoRestrictedError
This commit is contained in:
		@@ -47,7 +47,6 @@ from ..utils import (
 | 
			
		||||
    unsmuggle_url,
 | 
			
		||||
    uppercase_escape,
 | 
			
		||||
    urlencode_postdata,
 | 
			
		||||
    ISO3166Utils,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -371,6 +370,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
			
		||||
    }
 | 
			
		||||
    _SUBTITLE_FORMATS = ('ttml', 'vtt')
 | 
			
		||||
 | 
			
		||||
    _GEO_BYPASS = False
 | 
			
		||||
 | 
			
		||||
    IE_NAME = 'youtube'
 | 
			
		||||
    _TESTS = [
 | 
			
		||||
        {
 | 
			
		||||
@@ -917,7 +918,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
			
		||||
            # itag 212
 | 
			
		||||
            'url': '1t24XAntNCY',
 | 
			
		||||
            'only_matching': True,
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            # geo restricted to JP
 | 
			
		||||
            'url': 'sJL6WA-aGkQ',
 | 
			
		||||
            'only_matching': True,
 | 
			
		||||
        },
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
@@ -1376,11 +1382,11 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
			
		||||
        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']:
 | 
			
		||||
                    regions_allowed = self._html_search_meta('regionsAllowed', video_webpage, default=None)
 | 
			
		||||
                    if regions_allowed:
 | 
			
		||||
                        raise ExtractorError('YouTube said: This video is available in %s only' % (
 | 
			
		||||
                            ', '.join(map(ISO3166Utils.short2full, regions_allowed.split(',')))),
 | 
			
		||||
                            expected=True)
 | 
			
		||||
                    regions_allowed = self._html_search_meta(
 | 
			
		||||
                        'regionsAllowed', video_webpage, default=None)
 | 
			
		||||
                    countries = regions_allowed.split(',') if regions_allowed else None
 | 
			
		||||
                    self.raise_geo_restricted(
 | 
			
		||||
                        msg=video_info['reason'][0], countries=countries)
 | 
			
		||||
                raise ExtractorError(
 | 
			
		||||
                    'YouTube said: %s' % video_info['reason'][0],
 | 
			
		||||
                    expected=True, video_id=video_id)
 | 
			
		||||
@@ -2126,6 +2132,10 @@ class YoutubeChannelIE(YoutubePlaylistBaseInfoExtractor):
 | 
			
		||||
            'id': 'UUs0ifCMCm1icqRbqhUINa0w',
 | 
			
		||||
            'title': 'Uploads from Deus Ex',
 | 
			
		||||
        },
 | 
			
		||||
    }, {
 | 
			
		||||
        # geo restricted to JP
 | 
			
		||||
        'url': 'https://www.youtube.com/user/kananishinoSMEJ',
 | 
			
		||||
        'only_matching': True,
 | 
			
		||||
    }]
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user