Files
archived-MoviePilot-Plugins/plugins.v2/clashruleprovider/models/api.py
wumode 8a738b7684 refactor: ClashRuleProvider
- 优化插件目录结构和数据结构, 解耦API层和服务层
- 添加了一些Pydantic模型, 用于校验配置
- 支持独立的订阅链接配置
- 新增覆写代理组和出站代理操作
- 支持 smart 组和代理集合
- 代理组回环检测
- 使用异步调度器
- 显示规则更改日期
- 完善了对嵌套逻辑规则和子规则的配置和验证
2025-09-30 00:54:24 +08:00

48 lines
1.1 KiB
Python

from typing import List, Optional, Union, Literal
from pydantic import BaseModel, Field
from .rule import RoutingRuleType, Action, AdditionalParam
from .ruleproviders import RuleProvider
class RuleData(BaseModel):
priority: int
type: RoutingRuleType
payload: Optional[str] = None
action: Union[Action, str]
additional_params: Optional[AdditionalParam] = None
conditions: Optional[List[str]] = None
condition: Optional[str] = None
class Config:
use_enum_values = True
class ClashApi(BaseModel):
url: str
secret: str
class Connectivity(BaseModel):
clash_apis: List[ClashApi] = Field(default_factory=list)
sub_links: List[str] = Field(default_factory=list)
class Subscription(BaseModel):
url: str
class RuleProviderData(BaseModel):
name: str
rule_provider: RuleProvider
class SubscriptionInfo(BaseModel):
url: str
field: Literal['name', 'enabled']
value: Union[bool, str]
class Host(BaseModel):
domain: str
value: List[str]
using_cloudflare: bool
class HostData(BaseModel):
domain: str
value: Optional[Host] = None