2014-11-27 06:01:20 +11:00
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
2016-02-11 00:01:31 +11:00
|
|
|
try:
|
|
|
|
from .lazy_extractors import *
|
|
|
|
from .lazy_extractors import _ALL_CLASSES
|
2016-02-21 22:28:58 +11:00
|
|
|
_LAZY_LOADER = True
|
2016-02-11 00:01:31 +11:00
|
|
|
except ImportError:
|
2016-02-21 22:28:58 +11:00
|
|
|
_LAZY_LOADER = False
|
2016-02-11 00:01:31 +11:00
|
|
|
from .extractors import *
|
|
|
|
|
|
|
|
_ALL_CLASSES = [
|
|
|
|
klass
|
|
|
|
for name, klass in globals().items()
|
|
|
|
if name.endswith('IE') and name != 'GenericIE'
|
|
|
|
]
|
|
|
|
_ALL_CLASSES.append(GenericIE)
|
2013-06-24 06:36:24 +10:00
|
|
|
|
2013-08-25 05:10:03 +10:00
|
|
|
|
2016-02-10 23:16:18 +11:00
|
|
|
def gen_extractor_classes():
|
|
|
|
""" Return a list of supported extractors.
|
|
|
|
The order does matter; the first extractor matched is the one handling the URL.
|
|
|
|
"""
|
|
|
|
return _ALL_CLASSES
|
|
|
|
|
|
|
|
|
2013-06-24 06:36:24 +10:00
|
|
|
def gen_extractors():
|
|
|
|
""" Return a list of an instance of every supported extractor.
|
|
|
|
The order does matter; the first extractor matched is the one handling the URL.
|
|
|
|
"""
|
2016-02-10 23:16:18 +11:00
|
|
|
return [klass() for klass in gen_extractor_classes()]
|
2013-06-24 06:36:24 +10:00
|
|
|
|
2013-08-25 05:10:03 +10:00
|
|
|
|
2015-01-07 17:20:20 +11:00
|
|
|
def list_extractors(age_limit):
|
|
|
|
"""
|
|
|
|
Return a list of extractors that are suitable for the given age,
|
|
|
|
sorted by extractor ID.
|
|
|
|
"""
|
|
|
|
|
|
|
|
return sorted(
|
|
|
|
filter(lambda ie: ie.is_suitable(age_limit), gen_extractors()),
|
|
|
|
key=lambda ie: ie.IE_NAME.lower())
|
|
|
|
|
|
|
|
|
2013-06-24 06:36:24 +10:00
|
|
|
def get_info_extractor(ie_name):
|
|
|
|
"""Returns the info extractor class with the given ie_name"""
|
2014-11-24 07:20:46 +11:00
|
|
|
return globals()[ie_name + 'IE']
|