|  | @@ -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):
 | 
	
		
			
				|  |  |      """
 |