Skip to content

Commit 2eed3bf

Browse files
authored
Merge pull request #29 from iamzhz/multi-system
不同操作系统时,用预计算代替实时判断调用
2 parents dfad457 + 812394d commit 2eed3bf

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
@@ -15,6 +15,7 @@ import threading, requests, psutil
1515
import json
1616

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

@@ -257,21 +258,14 @@ def open_access_token_window():
257258

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

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

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

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

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

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

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

521524
# 获取资源列表
522525
try:

0 commit comments

Comments
 (0)