Skip to content

route_rules.source.preset

Classes:

Functions:

Attributes:

PRESETS module-attribute

PRESETS: list[PresetConfig] = [
    PresetConfig(
        "ads",
        "🛑 ADs",
        [
            "blackmatrix7:Advertising",
            "DustinWin/geosite-all:ads",
            "MetaCubeX/geosite:*-ads,*-ads-all,*@ads",
        ],
        [],
    ),
    PresetConfig(
        "private",
        "🔒 Private",
        [
            "blackmatrix7:Lan,NTPService",
            "DustinWin/geoip-all:private",
            "DustinWin/geosite-all:private",
            "MetaCubeX/geoip:private",
            "MetaCubeX/geosite:category-ntp*,private",
        ],
        ["preset:ads"],
    ),
    PresetConfig(
        "cn",
        "🇨🇳 CN",
        [
            "blackmatrix7:ChinaMax,Direct",
            "DustinWin/geoip-all:cn",
            "DustinWin/geosite-all:cn",
            "liblaf:cn",
            "MetaCubeX/geoip:cn",
            "MetaCubeX/geosite:cn,*-cn,*@cn",
        ],
        ["liblaf:!cn", "preset:ads", "preset:private"],
    ),
    PresetConfig(
        "proxy",
        "✈️ Proxy",
        [
            "blackmatrix7:Global",
            "DustinWin/geosite-all:proxy",
            "MetaCubeX/geosite:*!cn*",
        ],
        ["preset:ads", "preset:cn", "preset:private"],
    ),
    PresetConfig(
        "ai",
        "🤖 AI",
        [
            "blackmatrix7:Claude,Copilot,Gemini,OpenAI",
            "DustinWin/geosite-all:ai",
            "MetaCubeX/geosite:openai",
        ],
        ["preset:ads", "preset:cn", "preset:private"],
    ),
    PresetConfig(
        "download",
        "☁️ Download",
        [
            "blackmatrix7:Download,OneDrive",
            "MetaCubeX/geosite:onedrive",
        ],
        ["preset:ads", "preset:cn", "preset:private"],
    ),
    PresetConfig(
        "emby",
        "🍟 Emby",
        ["liblaf:emby", "NotSFC:Emby"],
        ["preset:ads", "preset:cn", "preset:private"],
    ),
    PresetConfig(
        "media",
        "📺 Media",
        [
            "blackmatrix7:GlobalMedia",
            "DustinWin/geosite-all:youtube",
            "MetaCubeX/geosite-lite:proxymedia,youtube",
            "MetaCubeX/geosite:youtube",
        ],
        ["preset:ads", "preset:cn", "preset:private"],
    ),
]

Preset

Bases: Source

Methods:

Attributes:

Source code in src/route_rules/source/preset/_preset.py
14
15
16
17
18
19
20
21
class Preset(Source):
    name: str = "preset"

    async def _get_nocache(self, key: str) -> Rule:
        return await get_preset(key)

    async def _keys_nocache(self) -> list[str]:
        return [preset.id for preset in PRESETS]

name class-attribute instance-attribute

name: str = 'preset'

__init__

__init__() -> None
Source code in src/route_rules/source/_abc.py
14
15
def __init__(self) -> None:
    self._rule_cache = LRU()

get async

get(*key: str) -> Rule
Source code in src/route_rules/source/_abc.py
17
18
async def get(self, *key: str) -> Rule:
    return Rule().union(*(await asyncio.gather(*(self._get(k) for k in key))))

keys async

keys() -> list[str]
Source code in src/route_rules/source/_abc.py
20
21
22
23
24
async def keys(self) -> list[str]:
    if self._key_cache is not None:
        return self._key_cache
    self._key_cache = await self._keys_nocache()
    return self._key_cache

PresetConfig

Bases: NamedTuple

Attributes:

Source code in src/route_rules/source/preset/_const.py
 7
 8
 9
10
11
class PresetConfig(NamedTuple):
    id: str
    name: str
    include: list[str]
    exclude: list[str]

exclude instance-attribute

exclude: list[str]

id instance-attribute

id: str

include instance-attribute

include: list[str]

name instance-attribute

name: str

get_preset async

get_preset(_id: str, *, exclude: bool = True) -> Rule
Source code in src/route_rules/source/preset/_const.py
 99
100
101
102
103
async def get_preset(_id: str, *, exclude: bool = True) -> Rule:
    for cfg in PRESETS:
        if cfg.id == _id:
            return await _get_preset(cfg, exclude=exclude)
    raise KeyError(_id)

get_rule async

get_rule(*spec: str) -> Rule
Source code in src/route_rules/source/preset/_rule.py
10
11
async def get_rule(*spec: str) -> Rule:
    return Rule().union(*(await asyncio.gather(*(_get_rule(s) for s in spec))))