diff options
Diffstat (limited to 'youtube_dl/extractor/common.py')
| -rw-r--r-- | youtube_dl/extractor/common.py | 30 | 
1 files changed, 30 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 562e656e0..df32b5ca0 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -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):      """ | 
