Skip to content

Commit 812394d

Browse files
committed
不同操作系统时,用预计算代替实时判断调用
1 parent 8e28f19 commit 812394d

File tree

1 file changed

+36
-33
lines changed

1 file changed

+36
-33
lines changed

src/tchMaterial-parser.pyw

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import threading, requests, psutil
1414
import json
1515

1616
os_name = platform.system() # 获取操作系统类型
17+
1718
if os_name == "Windows": # 如果是 Windows 操作系统,导入 Windows 相关库
1819
import win32print, win32gui, win32con, win32api, ctypes, winreg
1920

@@ -256,21 +257,14 @@ def open_access_token_window():
256257

257258
# 保存按钮
258259
def save_token():
260+
global tip_info
259261
user_token = token_text.get("1.0", tk.END).strip()
260262
if user_token:
261263
set_access_token(user_token)
262264
# 重新启用“下载”按钮,并提示用户
263265
download_btn.config(state="normal")
264-
265-
# 在 Windows & Linux 上额外提示存储位置
266-
if os_name == "Windows":
267-
reg_pos = "HKEY_CURRENT_USER\\Software\\tchMaterial-parser\\AccessToken"
268-
messagebox.showinfo("提示", f"Access Token 已保存!\n已写入注册表:{reg_pos}")
269-
elif os_name == "Linux":
270-
file_path = "~/.config/tchMaterial-parser/data.json"
271-
messagebox.showinfo("提示", f"Access Token 已保存!\n已写入文件:{file_path}")
272-
else:
273-
messagebox.showinfo("提示", "Access Token 已保存!")
266+
# 显示提示
267+
messagebox.showinfo("提示", tip_info)
274268

275269
token_window.destroy()
276270
else:
@@ -435,16 +429,15 @@ session.proxies = { "http": None, "https": None } # 全局忽略代理
435429
# 尝试从注册表读取本地存储的 access_token(仅限Windows)
436430
def load_access_token_from_registry():
437431
global access_token
438-
if os_name == "Windows":
439-
try:
440-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\tchMaterial-parser", 0, winreg.KEY_READ) as key:
441-
token, _ = winreg.QueryValueEx(key, "AccessToken")
442-
if token:
443-
access_token = token
444-
# 更新请求头
445-
headers["X-ND-AUTH"] = f'MAC id="{access_token}",nonce="0",mac="0"'
446-
except:
447-
pass # 读取失败则不做处理
432+
try:
433+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\tchMaterial-parser", 0, winreg.KEY_READ) as key:
434+
token, _ = winreg.QueryValueEx(key, "AccessToken")
435+
if token:
436+
access_token = token
437+
# 更新请求头
438+
headers["X-ND-AUTH"] = f'MAC id="{access_token}",nonce="0",mac="0"'
439+
except:
440+
pass # 读取失败则不做处理
448441

449442
# 尝试从Linux系统的 ~/.config/tchMaterial-parser/data.json 文件加载 access_token
450443
def load_access_token_on_linux():
@@ -470,12 +463,11 @@ def load_access_token_on_linux():
470463

471464
# 将access_token写入注册表
472465
def save_access_token_to_registry(token: str):
473-
if os_name == "Windows":
474-
try:
475-
with winreg.CreateKey(winreg.HKEY_CURRENT_USER, r"Software\\tchMaterial-parser") as key:
476-
winreg.SetValueEx(key, "AccessToken", 0, winreg.REG_SZ, token)
477-
except:
478-
pass
466+
try:
467+
with winreg.CreateKey(winreg.HKEY_CURRENT_USER, r"Software\\tchMaterial-parser") as key:
468+
winreg.SetValueEx(key, "AccessToken", 0, winreg.REG_SZ, token)
469+
except:
470+
pass
479471

480472
# 将access_token保存到 Linux 系统的 ~/.config/tchMaterial-parser/data.json 文件中
481473
def save_access_token_on_linux(token: str):
@@ -505,17 +497,28 @@ def set_access_token(token: str):
505497
global access_token, headers
506498
access_token = token
507499
headers["X-ND-AUTH"] = f'MAC id="{access_token}",nonce="0",mac="0"'
508-
if os_name == "Windows":
509-
save_access_token_to_registry(token)
510-
elif os_name == "Linux":
511-
save_access_token_on_linux(token)
500+
save_access_token(token)
512501

513-
# 立即尝试加载已存的access_token(如果有的话)
514502
if os_name == "Windows":
515-
load_access_token_from_registry()
503+
load_access_token = load_access_token_from_registry
504+
save_access_token = save_access_token_to_registry
505+
# 在 Windows 上额外提示存储位置
506+
reg_pos = "HKEY_CURRENT_USER\\Software\\tchMaterial-parser\\AccessToken"
507+
tip_info = f"Access Token 已保存!\n已写入注册表:{reg_pos}"
516508
elif os_name == "Linux":
517-
load_access_token_on_linux()
509+
load_access_token = load_access_token_on_linux
510+
save_access_token = save_access_token_on_linux
511+
# 在 Linux 上额外提示存储位置
512+
file_path = "~/.config/tchMaterial-parser/data.json"
513+
tip_info = f"Access Token 已保存!\n已写入文件:{file_path}"
514+
else:
515+
# 在其他操作系统上 load/save access_token 什么也不做
516+
load_access_token = lambda : 0
517+
save_access_token = lambda token : 0
518+
tip_info = "Access Token 已保存!"
518519

520+
# 立即尝试加载已存的access_token(如果有的话)
521+
load_access_token()
519522

520523
# 获取资源列表
521524
try:

0 commit comments

Comments
 (0)