__init__.py (1258B)
1 from __future__ import unicode_literals 2 3 try: 4 from .lazy_extractors import * 5 from .lazy_extractors import _ALL_CLASSES 6 _LAZY_LOADER = True 7 except ImportError: 8 _LAZY_LOADER = False 9 from .extractors import * 10 11 _ALL_CLASSES = [ 12 klass 13 for name, klass in globals().items() 14 if name.endswith('IE') and name != 'GenericIE' 15 ] 16 _ALL_CLASSES.append(GenericIE) 17 18 19 def gen_extractor_classes(): 20 """ Return a list of supported extractors. 21 The order does matter; the first extractor matched is the one handling the URL. 22 """ 23 return _ALL_CLASSES 24 25 26 def gen_extractors(): 27 """ Return a list of an instance of every supported extractor. 28 The order does matter; the first extractor matched is the one handling the URL. 29 """ 30 return [klass() for klass in gen_extractor_classes()] 31 32 33 def list_extractors(age_limit): 34 """ 35 Return a list of extractors that are suitable for the given age, 36 sorted by extractor ID. 37 """ 38 39 return sorted( 40 filter(lambda ie: ie.is_suitable(age_limit), gen_extractors()), 41 key=lambda ie: ie.IE_NAME.lower()) 42 43 44 def get_info_extractor(ie_name): 45 """Returns the info extractor class with the given ie_name""" 46 return globals()[ie_name + 'IE']