Files
auto_cursor_online/core/config.py
2025-03-31 09:55:54 +08:00

90 lines
1.8 KiB
Python

from dataclasses import dataclass
from typing import Tuple
import yaml
@dataclass
class GlobalConfig:
max_concurrency: int
timeout: int
retry_times: int
@dataclass
class DatabaseConfig:
path: str
pool_size: int
@dataclass
class ProxyConfig:
api_url: str
batch_size: int
check_interval: int
@dataclass
class RegisterConfig:
delay_range: Tuple[int, int]
batch_size: int
@dataclass
class EmailConfig:
file_path: str
@dataclass
class CapsolverConfig:
api_key: str
website_url: str
website_key: str
@dataclass
class YesCaptchaConfig:
client_key: str
website_url: str
website_key: str
use_cn_server: bool
@dataclass
class CaptchaConfig:
provider: str
capsolver: CapsolverConfig
yescaptcha: YesCaptchaConfig
@dataclass
class Config:
global_config: GlobalConfig
database_config: DatabaseConfig
proxy_config: ProxyConfig
register_config: RegisterConfig
email_config: EmailConfig
captcha_config: CaptchaConfig
@classmethod
def from_yaml(cls, path: str = "config.yaml"):
with open(path, 'r', encoding='utf-8') as f:
data = yaml.safe_load(f)
# 创建 captcha 配置对象
captcha_data = data['captcha']
captcha_config = CaptchaConfig(
provider=captcha_data['provider'],
capsolver=CapsolverConfig(**captcha_data['capsolver']),
yescaptcha=YesCaptchaConfig(**captcha_data['yescaptcha'])
)
return cls(
global_config=GlobalConfig(**data['global']),
database_config=DatabaseConfig(**data['database']),
proxy_config=ProxyConfig(**data['proxy']),
register_config=RegisterConfig(**data['register']),
email_config=EmailConfig(**data['email']),
captcha_config=captcha_config
)