diff --git a/src/module/api.py b/src/module/api.py index 8cae4b31..32a06259 100644 --- a/src/module/api.py +++ b/src/module/api.py @@ -58,6 +58,11 @@ async def add_rule(info: AddRule): return api_func.add_rule(info.title, info.season) +@router.get("/api/v1/getConfig", tags=["config"]) +async def get_config(): + return api_func.get_config() + + @router.post("/api/v1/updateConfig", tags=["config"]) async def update_config(config: Config): return api_func.update_config(config) diff --git a/src/module/conf/config.py b/src/module/conf/config.py index ec513609..38d87029 100644 --- a/src/module/conf/config.py +++ b/src/module/conf/config.py @@ -1,9 +1,10 @@ import json import os import logging +from dotenv import load_dotenv -from .const import ENV_TO_ATTR -from module.models import Config +from module.conf.const import ENV_TO_ATTR +from module.models.config import Config logger = logging.getLogger(__name__) @@ -48,13 +49,13 @@ def _val_from_env(env: str, attr: tuple): def env_to_config() -> Setting: - _settings = Setting() + _settings = Setting().dict() for key, section in ENV_TO_ATTR.items(): for env, attr in section.items(): if env in os.environ: attr_name = attr[0] if isinstance(attr, tuple) else attr - setattr(_settings, attr_name, _val_from_env(env, attr)) - return _settings + _settings[key][attr_name] = _val_from_env(env, attr) + return Setting(**_settings) if os.path.isdir("config") and VERSION == "DEV_VERSION": @@ -62,6 +63,7 @@ if os.path.isdir("config") and VERSION == "DEV_VERSION": if os.path.isfile(CONFIG_PATH): settings = load_config_from_file(CONFIG_PATH) else: + load_dotenv(".env") settings = env_to_config() save_config_to_file(settings, CONFIG_PATH) elif os.path.isdir("config") and VERSION != "DEV_VERSION": diff --git a/src/module/conf/const.py b/src/module/conf/const.py index 82d82c86..175a1e4b 100644 --- a/src/module/conf/const.py +++ b/src/module/conf/const.py @@ -56,8 +56,8 @@ DEFAULT_SETTINGS = { ENV_TO_ATTR = { "program": { - "AB_INTERVAL_TIME": ("sleep_time", float), - "AB_RENAME_FREQ": ("times", float), + "AB_INTERVAL_TIME": ("sleep_time", int), + "AB_RENAME_FREQ": ("times", int), "AB_WEBUI_PORT": ("webui_port", int), }, "downloader": { @@ -83,10 +83,6 @@ ENV_TO_ATTR = { "debug": { "AB_DEBUG_MODE": ("enable", lambda e: e.lower() in ("true", "1", "t")), }, - "proxy": { - "AB_HTTP_PROXY": "http", - "AB_SOCKS": "socks", - }, } diff --git a/src/module/core/api_func.py b/src/module/core/api_func.py index 5b94239d..449faf4a 100644 --- a/src/module/core/api_func.py +++ b/src/module/core/api_func.py @@ -1,7 +1,5 @@ import re -import os import logging -import signal from module.core import DownloadClient from module.manager import FullSeasonGet @@ -76,3 +74,7 @@ class APIProcess: def update_config(config: Config): save_config_to_file(config, CONFIG_PATH) return {"message": "Success"} + + @staticmethod + def get_config() -> dict: + return json_config.load(CONFIG_PATH) diff --git a/src/module/models/bangumi.py b/src/module/models/bangumi.py index f8b8d6b2..c9a08fd8 100644 --- a/src/module/models/bangumi.py +++ b/src/module/models/bangumi.py @@ -1,6 +1,25 @@ +from pydantic import BaseModel, Field from dataclasses import dataclass +class BangumiData(BaseModel): + id: int = Field(..., alias="id", title="番剧ID") + official_title: str = Field(..., alias="official_title", title="番剧中文名") + year: int = Field(..., alias="year", title="番剧年份") + title_raw: str = Field(..., alias="title_raw", title="番剧原名") + season: int = Field(..., alias="season", title="番剧季度") + season_raw: str = Field(..., alias="season_raw", title="番剧季度原名") + group: str = Field(..., alias="group", title="字幕组") + dpi: str = Field(..., alias="dpi", title="分辨率") + source: str = Field(..., alias="source", title="来源") + subtitle: str = Field(..., alias="subtitle", title="字幕") + added: bool = Field(False, alias="added", title="是否已添加") + eps_collect: bool = Field(False, alias="eps_collect", title="是否已收集") + offset: int = Field(0, alias="offset", title="番剧偏移量") + filter: list[str] = Field(..., alias="filter", title="番剧过滤器") + + + @dataclass class MatchRule: keyword: str