From 2aeb32763842bf3293b4b8921b02ef5969dd2423 Mon Sep 17 00:00:00 2001 From: RoyirinRosmontis Date: Wed, 26 Aug 2026 14:39:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD=EF=BC=9A?= =?UTF-8?q?=20-=20=E5=88=87=E6=8D=A2=E8=8A=82=E7=82=B9=E5=90=8E=E6=8A=8A?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E8=8A=82=E7=82=B9=E5=9F=9F=E5=90=8D=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=B0=E7=94=A8=E6=88=B7=E8=AE=BE=E7=BD=AE=EF=BC=88?= =?UTF-8?q?settings.json=20=E7=9A=84=20current=5Fnode=EF=BC=89=EF=BC=8C?= =?UTF-8?q?=E4=B8=8B=E6=AC=A1=E5=90=AF=E5=8A=A8=E8=87=AA=E5=8A=A8=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD=E4=BD=BF=E7=94=A8=E4=B8=8A=E6=AC=A1=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E8=8A=82=E7=82=B9=EF=BC=88=E6=8C=89=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=EF=BC=8C=E8=8A=82=E7=82=B9=E8=A1=A8=E5=8F=98?= =?UTF-8?q?=E5=8C=96=E6=97=B6=E5=AE=89=E5=85=A8=E5=9B=9E=E9=80=80=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E6=9D=A1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lite/proxy_lite.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lite/proxy_lite.py b/lite/proxy_lite.py index effcb6d..2026abf 100644 --- a/lite/proxy_lite.py +++ b/lite/proxy_lite.py @@ -88,6 +88,8 @@ def _load_nodes(): if not isinstance(data, list): raise ValueError("nodes.json 顶层应为节点数组") _NODES = data + if not _SELECTED_RESTORED: + _restore_selected_node(_NODES) # 恢复上次使用的节点 log(f"已加载节点配置: {len(_NODES)} 个 ({path})") if data and not str(data[0].get("domain") or "").strip(): log_red("节点未填写域名:请配置 config.json 的 nodes_url 在线更新," @@ -97,6 +99,7 @@ def _load_nodes(): return _NODES _SELECTED_NODE = 0 # 当前选中节点下标(默认第一条) +_SELECTED_RESTORED = False # 启动时是否已按设置恢复过上次选中的节点 def _current_node(): """当前使用的节点:默认取列表第一个;无节点时返回 None。""" @@ -121,8 +124,26 @@ def _switch_node(index): log("已在当前节点") return False _SELECTED_NODE = index + _save_current_node(nodes[index].get("domain") or "") # 记录到设置,下次启动恢复 return True +def _restore_selected_node(nodes): + """首次加载时按设置里记录的 current_node(域名)恢复上次选中的节点。""" + global _SELECTED_NODE, _SELECTED_RESTORED + _SELECTED_RESTORED = True + saved = str(_settings_load().get("current_node") or "") + for i, n in enumerate(nodes): + if saved and str(n.get("domain") or "") == saved: + _SELECTED_NODE = i + return + _SELECTED_NODE = 0 + +def _save_current_node(domain): + """把当前选中节点域名写入设置文件(下次启动自动继续使用)。""" + data = _settings_load() + data["current_node"] = str(domain or "") + _settings_save(data) + def _reload_nodes(): """强制重新读取 nodes.json(菜单打开时调用,外部改动即时生效)。""" global _NODES