summaryrefslogtreecommitdiffstats
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__.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/yt_dlp/extractor/__init__.py b/yt_dlp/extractor/__init__.py
new file mode 100644
index 0000000..6bfa4bd
--- /dev/null
+++ b/yt_dlp/extractor/__init__.py
@@ -0,0 +1,42 @@
+from ..compat.compat_utils import passthrough_module
+
+passthrough_module(__name__, '.extractors')
+del passthrough_module
+
+
+def gen_extractor_classes():
+ """ Return a list of supported extractors.
+ The order does matter; the first extractor matched is the one handling the URL.
+ """
+ from .extractors import _ALL_CLASSES
+
+ 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_extractor_classes(age_limit=None):
+ """Return a list of extractors that are suitable for the given age, sorted by extractor name"""
+ from .generic import GenericIE
+
+ yield from sorted(filter(
+ lambda ie: ie.is_suitable(age_limit) and ie != GenericIE,
+ gen_extractor_classes()), key=lambda ie: ie.IE_NAME.lower())
+ yield GenericIE
+
+
+def list_extractors(age_limit=None):
+ """Return a list of extractor instances that are suitable for the given age, sorted by extractor name"""
+ return [ie() for ie in list_extractor_classes(age_limit)]
+
+
+def get_info_extractor(ie_name):
+ """Returns the info extractor class with the given ie_name"""
+ from . import extractors
+
+ return getattr(extractors, f'{ie_name}IE')