x
This commit is contained in:
89
core/config.py
Normal file
89
core/config.py
Normal file
@@ -0,0 +1,89 @@
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user