aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/extractors.py
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-09-16 16:37:38 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-09-16 17:02:52 +0530
commit2314b4d89fc111ddfcb25937210f1f1c2390cc4a (patch)
tree152d1e66a4e4dc6117b29f87f0dbf88eea3cc904 /yt_dlp/extractor/extractors.py
parent1060f82f899b61a0a1c63df37ecdf6dc2bae50e8 (diff)
downloadhypervideo-pre-2314b4d89fc111ddfcb25937210f1f1c2390cc4a.tar.lz
hypervideo-pre-2314b4d89fc111ddfcb25937210f1f1c2390cc4a.tar.xz
hypervideo-pre-2314b4d89fc111ddfcb25937210f1f1c2390cc4a.zip
Allow plugin extractors to replace the built-in ones
This allows easier plugin chaining; e.g. - https://gist.github.com/pukkandan/24f13ff1ed385c5a390c1d7bd130d8f7 - https://gist.github.com/pukkandan/fcf5ca1785c80f64e471f0ee14f990fb
Diffstat (limited to 'yt_dlp/extractor/extractors.py')
-rw-r--r--yt_dlp/extractor/extractors.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/yt_dlp/extractor/extractors.py b/yt_dlp/extractor/extractors.py
index 32818a024..610e02f90 100644
--- a/yt_dlp/extractor/extractors.py
+++ b/yt_dlp/extractor/extractors.py
@@ -3,6 +3,9 @@ import os
from ..utils import load_plugins
+# NB: Must be before other imports so that plugins can be correctly injected
+_PLUGIN_CLASSES = load_plugins('extractor', 'IE', {})
+
_LAZY_LOADER = False
if not os.environ.get('YTDLP_NO_LAZY_EXTRACTORS'):
with contextlib.suppress(ImportError):
@@ -19,5 +22,5 @@ if not _LAZY_LOADER:
]
_ALL_CLASSES.append(GenericIE) # noqa: F405
-_PLUGIN_CLASSES = load_plugins('extractor', 'IE', globals())
-_ALL_CLASSES = list(_PLUGIN_CLASSES.values()) + _ALL_CLASSES
+globals().update(_PLUGIN_CLASSES)
+_ALL_CLASSES[:0] = _PLUGIN_CLASSES.values()