feat: save registered accounts to postgres

This commit is contained in:
mmc
2026-03-19 14:32:17 +08:00
parent 6a250fe6a1
commit 2904e43b1f
11 changed files with 235 additions and 4 deletions

31
main.py
View File

@@ -17,6 +17,7 @@ if str(PROJECT_ROOT) not in sys.path:
from openai_pool_orchestrator import TOKENS_DIR, __version__
from openai_pool_orchestrator.mail_providers import MultiMailRouter
from openai_pool_orchestrator.register import _write_text_atomic, run as register_run
from account_store import save_registered_account
try:
from .support import (
@@ -231,6 +232,27 @@ def _perform_registration_once(cfg: dict[str, Any], proxy: Optional[str]) -> dic
print(f"[*] 成功! Token 已保存至: {file_path}")
run_result: dict[str, Any] = {"ok": True, "file": file_name, "email": email}
if cfg.get("db_enabled"):
try:
db_result = save_registered_account(
cfg,
{
"email": token_data.get("email", ""),
"chatgpt_password": token_data.get("account_password", ""),
"mail_password": token_data.get("mail_password", ""),
"oauth_status": "oauth=ok",
"mail_token": token_data.get("mail_token", ""),
"name": token_data.get("name", ""),
"birthdate": token_data.get("birthdate", ""),
"source": cfg.get("db_source", "standalone_cli"),
},
)
run_result["db_saved"] = bool(db_result.get("ok", False))
print(f"[{'+' if db_result.get('ok') else '-'}] 数据库{'写入成功' if db_result.get('ok') else '写入失败'}: {email}")
except Exception as exc:
run_result["db_saved"] = False
run_result["db_error"] = str(exc)
print(f"[-] 数据库写入异常: {exc}")
cpa = get_pool_maintainer(cfg)
if cpa:
cpa_ok = cpa.upload_token(file_name, token_data, proxy="")
@@ -479,6 +501,15 @@ def handle_config_setup(args: argparse.Namespace) -> dict[str, Any]:
cfg["auto_register"] = _prompt_bool("2) 池不足时自动注册", bool(cfg.get("auto_register", False)))
cfg["auto_register_max_per_loop"] = _prompt_int(" 每轮最多自动补号数量", int(cfg.get("auto_register_max_per_loop", 1) or 1))
print(" 提示: 这个值越大,补号越快,但也会更激进。一般先用 1 或 2。")
cfg["db_enabled"] = _prompt_bool(" 是否启用 PostgreSQL 注册信息入库", bool(cfg.get("db_enabled", False)))
if cfg["db_enabled"]:
cfg["db_host"] = _prompt_text(" DB 主机", str(cfg.get("db_host") or "150.158.105.6"))
cfg["db_port"] = _prompt_int(" DB 端口", int(cfg.get("db_port", 54321) or 54321))
cfg["db_name"] = _prompt_text(" DB 名称", str(cfg.get("db_name") or "mail_accounts_db"))
cfg["db_user"] = _prompt_text(" DB 用户名", str(cfg.get("db_user") or "postgres"))
cfg["db_password"] = _prompt_text(" DB 密码", str(cfg.get("db_password") or ""))
cfg["db_table"] = _prompt_text(" DB 表名", str(cfg.get("db_table") or "registered_accounts"))
cfg["db_source"] = _prompt_text(" source 字段值", str(cfg.get("db_source") or "standalone_cli"))
provider_options = ["mailtm", "duckmail", "moemail", "cloudflare_temp_email"]
current_provider = str((cfg.get("mail_providers") or ["mailtm"])[0]).strip().lower() or "mailtm"