aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/extractor/__init__.py')
-rw-r--r--yt_dlp/extractor/__init__.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/yt_dlp/extractor/__init__.py b/yt_dlp/extractor/__init__.py
new file mode 100644
index 000000000..198c4ae17
--- /dev/null
+++ b/yt_dlp/extractor/__init__.py
@@ -0,0 +1,53 @@
+from __future__ import unicode_literals
+
+from ..utils import load_plugins
+
+try:
+ from .lazy_extractors import *
+ from .lazy_extractors import _ALL_CLASSES
+ _LAZY_LOADER = True
+ _PLUGIN_CLASSES = {}
+except ImportError:
+ _LAZY_LOADER = False
+
+if not _LAZY_LOADER:
+ from .extractors import *
+ _ALL_CLASSES = [
+ klass
+ for name, klass in globals().items()
+ if name.endswith('IE') and name != 'GenericIE'
+ ]
+ _ALL_CLASSES.append(GenericIE)
+
+ _PLUGIN_CLASSES = load_plugins('extractor', 'IE', globals())
+ _ALL_CLASSES = list(_PLUGIN_CLASSES.values()) + _ALL_CLASSES
+
+
+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
+
+
+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.
+ """
+ return [klass() for klass in gen_extractor_classes()]
+
+
+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())
+
+
+def get_info_extractor(ie_name):
+ """Returns the info extractor class with the given ie_name"""
+ return globals()[ie_name + 'IE']