mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-05-25 07:26:52 +00:00
- 优化插件目录结构和数据结构, 解耦API层和服务层 - 添加了一些Pydantic模型, 用于校验配置 - 支持独立的订阅链接配置 - 新增覆写代理组和出站代理操作 - 支持 smart 组和代理集合 - 代理组回环检测 - 使用异步调度器 - 显示规则更改日期 - 完善了对嵌套逻辑规则和子规则的配置和验证
34 lines
1.5 KiB
Python
34 lines
1.5 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import Any, Dict, List
|
|
|
|
from .helper.clashrulemanager import ClashRuleManager
|
|
from .helper.proxiesmanager import ProxyManager
|
|
|
|
|
|
@dataclass
|
|
class PluginState:
|
|
"""
|
|
A dataclass to hold all the runtime state of the ClashRuleProvider plugin.
|
|
"""
|
|
# Rule and Proxy Managers
|
|
top_rules_manager: ClashRuleManager = field(default_factory=ClashRuleManager)
|
|
ruleset_rules_manager: ClashRuleManager = field(default_factory=ClashRuleManager)
|
|
proxies_manager: ProxyManager = field(default_factory=ProxyManager)
|
|
|
|
# Loaded from saved data
|
|
proxy_groups: List[Dict[str, Any]] = field(default_factory=list)
|
|
extra_proxies: List[Dict[str, Any]] = field(default_factory=list)
|
|
subscription_info: Dict[str, Any] = field(default_factory=dict)
|
|
rule_provider: Dict[str, Any] = field(default_factory=dict)
|
|
rule_providers: Dict[str, Any] = field(default_factory=dict)
|
|
ruleset_names: Dict[str, str] = field(default_factory=dict)
|
|
acl4ssr_providers: Dict[str, Any] = field(default_factory=dict)
|
|
clash_configs: Dict[str, Any] = field(default_factory=dict)
|
|
hosts: List[Dict[str, Any]] = field(default_factory=list)
|
|
overwritten_region_groups: Dict[str, Any] = field(default_factory=dict)
|
|
overwritten_proxies: Dict[str, Any] = field(default_factory=dict)
|
|
clash_template_dict: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
# Volatile state (generated at runtime)
|
|
geo_rules: Dict[str, List[str]] = field(default_factory=lambda: {'geoip': [], 'geosite': []})
|