mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 10:37:09 -05:00 
			
		
		
		
	Respect age_limit when listing extractors (Fixes #4653)
This commit is contained in:
		@@ -21,6 +21,7 @@ from ..compat import (
 | 
			
		||||
    compat_str,
 | 
			
		||||
)
 | 
			
		||||
from ..utils import (
 | 
			
		||||
    age_restricted,
 | 
			
		||||
    clean_html,
 | 
			
		||||
    compiled_regex_type,
 | 
			
		||||
    ExtractorError,
 | 
			
		||||
@@ -877,6 +878,35 @@ class InfoExtractor(object):
 | 
			
		||||
            None, '/', True, False, expire_time, '', None, None, None)
 | 
			
		||||
        self._downloader.cookiejar.set_cookie(cookie)
 | 
			
		||||
 | 
			
		||||
    def get_testcases(self, include_onlymatching=False):
 | 
			
		||||
        t = getattr(self, '_TEST', None)
 | 
			
		||||
        if t:
 | 
			
		||||
            assert not hasattr(self, '_TESTS'), \
 | 
			
		||||
                '%s has _TEST and _TESTS' % type(self).__name__
 | 
			
		||||
            tests = [t]
 | 
			
		||||
        else:
 | 
			
		||||
            tests = getattr(self, '_TESTS', [])
 | 
			
		||||
        for t in tests:
 | 
			
		||||
            if not include_onlymatching and t.get('only_matching', False):
 | 
			
		||||
                continue
 | 
			
		||||
            t['name'] = type(self).__name__[:-len('IE')]
 | 
			
		||||
            yield t
 | 
			
		||||
 | 
			
		||||
    def is_suitable(self, age_limit):
 | 
			
		||||
        """ Test whether the extractor is generally suitable for the given
 | 
			
		||||
        age limit (i.e. pornographic sites are not, all others usually are) """
 | 
			
		||||
 | 
			
		||||
        any_restricted = False
 | 
			
		||||
        for tc in self.get_testcases(include_onlymatching=False):
 | 
			
		||||
            if 'playlist' in tc:
 | 
			
		||||
                tc = tc['playlist'][0]
 | 
			
		||||
            is_restricted = age_restricted(
 | 
			
		||||
                tc.get('info_dict', {}).get('age_limit'), age_limit)
 | 
			
		||||
            if not is_restricted:
 | 
			
		||||
                return True
 | 
			
		||||
            any_restricted = any_restricted or is_restricted
 | 
			
		||||
        return not any_restricted
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SearchInfoExtractor(InfoExtractor):
 | 
			
		||||
    """
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user