diff --git a/src/module/conf/config.py b/src/module/conf/config.py index c58e9ef5..683067e4 100644 --- a/src/module/conf/config.py +++ b/src/module/conf/config.py @@ -47,8 +47,13 @@ def env_to_config() -> Setting: 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 - _settings[key][attr_name] = _val_from_env(env, attr) + if isinstance(attr, list): + for _attr in attr: + attr_name = _attr[0] if isinstance(_attr, tuple) else _attr + _settings[key][attr_name] = _val_from_env(env, _attr) + else: + attr_name = attr[0] if isinstance(attr, tuple) else attr + _settings[key][attr_name] = _val_from_env(env, attr) return Setting(**_settings) diff --git a/src/module/conf/const.py b/src/module/conf/const.py index 39516187..571db099 100644 --- a/src/module/conf/const.py +++ b/src/module/conf/const.py @@ -67,7 +67,10 @@ ENV_TO_ATTR = { }, "rss_parser": { "AB_RSS_COLLECTOR": ("enable", lambda e: e.lower() in ("true", "1", "t")), - "AB_RSS": ("token", lambda e: parse_qs(urlparse(e).query).get("token", [None])[0]), + "AB_RSS": [ + ("token", lambda e: parse_qs(urlparse(e).query).get("token", [None])[0]), + ("custom_url", lambda e: urlparse(e).netloc), + ], "AB_NOT_CONTAIN": ("filter", lambda e: e.split("|")), "AB_LANGUAGE": "language", "AB_ENABLE_TMDB": ("enable_tmdb", lambda e: e.lower() in ("true", "1", "t")), @@ -82,6 +85,22 @@ ENV_TO_ATTR = { "log": { "AB_DEBUG_MODE": ("debug_enable", lambda e: e.lower() in ("true", "1", "t")), }, + "proxy": { + "AB_HTTP_PROXY": [ + ("enable", lambda e: True), + ("type", lambda e: "http"), + ("host", lambda e: e.split(":")[0]), + ("port", lambda e: int(e.split(":")[1])), + ], + "AB_SOCKS": [ + ("enable", lambda e: True), + ("type", lambda e: "socks"), + ("host", lambda e: e.split(",")[0]), + ("port", lambda e: int(e.split(",")[1])), + ("username", lambda e: e.split(",")[2]), + ("password", lambda e: e.split(",")[3]), + ], + }, }