示例#1
0
 def test_default_location_no_appdata_envvar(self, monkeypatch):
     monkeypatch.delenv('AppData', raising=False)
     assert get_config_home() == Path('X:/fakehome/AppData/Roaming/dl-plus')
示例#2
0
 def test_default_location_with_appdata_envvar(self, monkeypatch):
     monkeypatch.setenv('AppData', 'X:/appdata')
     assert get_config_home() == Path('X:/appdata/dl-plus')
示例#3
0
 def test_default_location_with_xdg_config_home_envvar(self, monkeypatch):
     monkeypatch.setenv('XDG_CONFIG_HOME', '/xdgconfig')
     assert get_config_home() == Path('/xdgconfig/dl-plus')
示例#4
0
 def test_default_location_no_xdg_config_home_envvar(self, monkeypatch):
     monkeypatch.delenv('XDG_CONFIG_HOME', raising=False)
     assert get_config_home() == Path('/fakehome/.config/dl-plus')
示例#5
0
def test_location_from_env(monkeypatch):
    monkeypatch.setenv('DL_PLUS_HOME', '/dl/plus/home')
    assert get_config_home() == Path('/dl/plus/home')
示例#6
0
文件: backend.py 项目: un-def/dl-plus
import sys
from collections import namedtuple
from pathlib import Path

from dl_plus import ytdl
from dl_plus.config import get_config_home
from dl_plus.exceptions import DLPlusException
from dl_plus.pypi import load_metadata

backends_dir = get_config_home() / 'backends'

BackendInfo = namedtuple('BackendInfo',
                         'import_name,version,path,is_managed,metadata')


class BackendError(DLPlusException):

    pass


def _is_managed(location: Path) -> bool:
    try:
        location.relative_to(backends_dir)
        return True
    except ValueError:
        return False


def _normalize(string: str) -> str:
    return string.replace('-', '_')
示例#7
0
文件: core.py 项目: un-def/dl-plus
import sys
from pathlib import Path
from typing import TYPE_CHECKING, Dict, Iterable, List, Set, Type

from dl_plus import ytdl
from dl_plus.config import get_config_home
from dl_plus.extractor import machinery
from dl_plus.extractor.peqn import PEQN

if TYPE_CHECKING:
    from .extractor.extractor import Extractor

extractor_plugins_dir = get_config_home() / 'extractors'


def get_extractor_plugin_dir(ns: str, plugin: str) -> Path:
    return extractor_plugins_dir / f'{ns}-{plugin}'


def get_extractors(names: Iterable[str]) -> List[Type['Extractor']]:
    extractors_dict: Dict[Type['Extractor'], bool] = {}
    added_search_paths: Set[str] = set()

    def maybe_add_search_path(path: Path) -> None:
        if not path.is_dir():
            return
        path_str = str(path)
        if path_str not in added_search_paths:
            sys.path.insert(0, path_str)
            added_search_paths.add(path_str)