nacho commited on
Commit
0d78fef
·
1 Parent(s): 4b9c49a

feat: 在网页端导入账号时自动持久化到 settings.json,防止重启后丢失

Browse files
Files changed (1) hide show
  1. main.py +21 -0
main.py CHANGED
@@ -376,6 +376,18 @@ async def import_accounts(request: Request, admin_key: str = Header(...)):
376
  new_accounts.append(manager.accounts[email])
377
  imported += 1
378
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  # 异步触发新导入账号的预登录
380
  async def prelogin_new_accounts():
381
  for account in new_accounts:
@@ -650,6 +662,15 @@ def _apply_settings(data: dict):
650
  enabled=data["log_file_enabled"],
651
  max_mb=data.get("log_file_max_mb", 10),
652
  )
 
 
 
 
 
 
 
 
 
653
 
654
 
655
  def _setup_file_handler(enabled: bool, max_mb: int = 10):
 
376
  new_accounts.append(manager.accounts[email])
377
  imported += 1
378
 
379
+ # 持久化到 settings.json
380
+ if imported > 0:
381
+ saved = _load_settings()
382
+ saved_accounts = saved.get("accounts", [])
383
+ acc_map = {a.get("email"): a for a in saved_accounts if a.get("email")}
384
+ for acc in accounts:
385
+ e = acc.get("email")
386
+ if e and acc.get("password"):
387
+ acc_map[e] = acc
388
+ saved["accounts"] = list(acc_map.values())
389
+ _save_settings(saved)
390
+
391
  # 异步触发新导入账号的预登录
392
  async def prelogin_new_accounts():
393
  for account in new_accounts:
 
662
  enabled=data["log_file_enabled"],
663
  max_mb=data.get("log_file_max_mb", 10),
664
  )
665
+ if "accounts" in data:
666
+ for acc in data["accounts"]:
667
+ if acc.get("email") and acc.get("password") and acc.get("email") not in manager.accounts:
668
+ manager.add_account(
669
+ email=acc["email"],
670
+ password=acc["password"],
671
+ name=acc.get("name", ""),
672
+ proxy=acc.get("proxy")
673
+ )
674
 
675
 
676
  def _setup_file_handler(enabled: bool, max_mb: int = 10):