]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/plugins.py
Fix config locations (#5933)
[yt-dlp.git] / yt_dlp / plugins.py
index 7d2226d0f1b4e3f6d03247f43fa65553760ff310..ff5ab9d5e2c8e6f584cdb95316b1b86d038928a9 100644 (file)
@@ -5,7 +5,6 @@
 import importlib.util
 import inspect
 import itertools
-import os
 import pkgutil
 import sys
 import traceback
 from zipfile import ZipFile
 
 from .compat import functools  # isort: split
-from .compat import compat_expanduser
 from .utils import (
     get_executable_path,
     get_system_config_dirs,
     get_user_config_dirs,
+    orderedSet,
     write_string,
 )
 
@@ -57,7 +56,7 @@ def search_locations(self, fullname):
         candidate_locations = []
 
         def _get_package_paths(*root_paths, containing_folder='plugins'):
-            for config_dir in map(Path, root_paths):
+            for config_dir in orderedSet(map(Path, root_paths), lazy=True):
                 plugin_dir = config_dir / containing_folder
                 if not plugin_dir.is_dir():
                     continue
@@ -65,15 +64,15 @@ def _get_package_paths(*root_paths, containing_folder='plugins'):
 
         # Load from yt-dlp config folders
         candidate_locations.extend(_get_package_paths(
-            *get_user_config_dirs('yt-dlp'), *get_system_config_dirs('yt-dlp'),
+            *get_user_config_dirs('yt-dlp'),
+            *get_system_config_dirs('yt-dlp'),
             containing_folder='plugins'))
 
         # Load from yt-dlp-plugins folders
         candidate_locations.extend(_get_package_paths(
             get_executable_path(),
-            compat_expanduser('~'),
-            '/etc',
-            os.getenv('XDG_CONFIG_HOME') or compat_expanduser('~/.config'),
+            *get_user_config_dirs(''),
+            *get_system_config_dirs(''),
             containing_folder='yt-dlp-plugins'))
 
         candidate_locations.extend(map(Path, sys.path))  # PYTHONPATH