From 8fed0a18446b5c71766393e0e99c49a7f34ef639 Mon Sep 17 00:00:00 2001 From: RoyirinRosmontis Date: Sun, 23 Aug 2026 12:29:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=20-=20=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8D=AE=E7=9B=AE=E5=BD=95=E4=BB=8E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=B8=BB=E7=9B=AE=E5=BD=95=20~/RRPP=20=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E5=88=B0=20Windows=20=E6=83=AF=E4=BE=8B=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=20%LOCALAPPDATA%\RRPP=EF=BC=88=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E8=BF=9B=E5=A4=87=E4=BB=BD=E3=80=81=E6=97=A0?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=86=B2=E7=AA=81=EF=BC=9B=E9=9D=9E=20Window?= =?UTF-8?q?s=20=E7=8E=AF=E5=A2=83=E5=9B=9E=E9=80=80=E4=B8=BB=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lite/proxy_lite.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lite/proxy_lite.py b/lite/proxy_lite.py index ad5e03f..1a869f8 100644 --- a/lite/proxy_lite.py +++ b/lite/proxy_lite.py @@ -73,7 +73,7 @@ def _config_val(key, default=""): _NODES = None def _load_nodes(): - """加载 nodes.json 节点列表(~/RRPP 优先);失败或缺失时返回空列表。""" + """加载 nodes.json 节点列表(用户数据目录优先);失败或缺失时返回空列表。""" global _NODES if _NODES is not None: return _NODES @@ -521,10 +521,13 @@ def _data_path(name: str): p = Path(BASE_DIR) / name return p if p.is_file() else None -_USER_DIR = Path.home() / "RRPP" # 用户数据目录(nodes.json / PAC 数据),测试可覆盖 +# 用户数据目录:Windows 惯例 %LOCALAPPDATA%(C:\Users\<用户>\AppData\Local), +# 非 Windows 环境回退用户主目录;测试可覆盖 +_USER_DIR = (Path(os.environ["LOCALAPPDATA"]) if os.name == "nt" and os.environ.get("LOCALAPPDATA") + else Path.home()) / "RRPP" def _user_path(name: str): - """用户数据文件路径:~/RRPP 优先,回退内置/源码目录(dev 模式与测试)。""" + """用户数据文件路径:用户数据目录优先,回退内置/源码目录(dev 模式与测试)。""" p = _USER_DIR / name if p.is_file(): return p @@ -574,7 +577,7 @@ def _pac_validate(name, data): return False def _pac_write(name, data): - """PAC 数据原子写入 ~/RRPP(tmp+replace,写不坏旧文件)。""" + """PAC 数据原子写入用户数据目录(tmp+replace,写不坏旧文件)。""" import json _USER_DIR.mkdir(parents=True, exist_ok=True) tmp = _USER_DIR / f"{name}.json.tmp" @@ -582,7 +585,7 @@ def _pac_write(name, data): os.replace(tmp, _USER_DIR / f"{name}.json") def _user_init_local(): - """初始化 ~/RRPP(同步):建目录,nodes.json 缺失时写入空模板。""" + """初始化用户数据目录(同步):建目录,nodes.json 缺失时写入空模板。""" _USER_DIR.mkdir(parents=True, exist_ok=True) if _user_path("nodes.json") is None: import json @@ -610,7 +613,7 @@ def _user_init_remote(base_url=None, nodes_url=None): raise ValueError(f"{name}.json 数据格式不正确") rver = str(data.get("version") or "") rdate = str(data.get("date") or "") - # 版本只与 ~/RRPP 本地文件比对(回退文件仅用于读取,不参与更新判定) + # 版本只与用户数据目录本地文件比对(回退文件仅用于读取,不参与更新判定) local = _USER_DIR / f"{name}.json" lver = _pac_read_version(local)[0] if local.is_file() else "" if rver: @@ -1099,7 +1102,7 @@ class MainWindow(QWidget): self._update_download_done.connect(self._on_update_download_done) self._status_ready.connect(self._apply_status) - _user_init_local() # 首启初始化 ~/RRPP(节点模板),须在 init_ui 读节点之前 + _user_init_local() # 首启初始化用户数据目录(节点模板),须在 init_ui 读节点之前 self.init_ui() @@ -1111,7 +1114,7 @@ class MainWindow(QWidget): # 启动时后台检查更新,完成前禁用开启按钮 threading.Thread(target=self._check_update, daemon=True).start() - # 后台检查 PAC 数据更新(首次启动自动拉取到 ~/RRPP) + # 后台检查 PAC 数据更新(首次启动自动拉取到用户数据目录) threading.Thread(target=_user_init_remote, daemon=True).start() def init_ui(self):