From 2d72ca66a4d171630761e39a0cc575cf1db06260 Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Sun, 1 Jun 2025 19:52:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(core):=20=E4=BF=AE=E5=A4=8D=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E6=A8=A1=E5=9D=97=E5=AD=90=E7=BA=BF=E7=A8=8B=E6=9C=AA?= =?UTF-8?q?=E5=8F=8A=E6=97=B6=E9=94=80=E6=AF=81=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 2 +- app/core/network.py | 22 ++++++++++++++++++---- app/core/sound_player.py | 11 +++++------ app/core/task_manager.py | 6 ++++++ app/models/MAA.py | 19 ++++++++++--------- app/ui/downloader.py | 4 ++++ resources/version.json | 7 ++++++- 7 files changed, 50 insertions(+), 21 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index b8c713d..2e1311a 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -572,7 +572,7 @@ class MaaPlanConfig(LQConfig): class AppConfig(GlobalConfig): - VERSION = "4.3.9.2" + VERSION = "4.3.9.0" gameid_refreshed = Signal() PASSWORD_refreshed = Signal() diff --git a/app/core/network.py b/app/core/network.py index 628b6cf..d040cdb 100644 --- a/app/core/network.py +++ b/app/core/network.py @@ -27,6 +27,7 @@ v4.3 from loguru import logger from PySide6.QtCore import QObject, QThread, QEventLoop +import re import time import requests from pathlib import Path @@ -42,6 +43,10 @@ class NetworkThread(QThread): def __init__(self, mode: str, url: str, path: Path = None) -> None: super().__init__() + self.setObjectName( + f"NetworkThread-{mode}-{re.sub(r'(&cdk=)[^&]+(&)', r'\1******\2', url)}" + ) + self.mode = mode self.url = url self.path = path @@ -125,13 +130,22 @@ class _Network(QObject): def get_result(self, network_thread: NetworkThread) -> dict: """获取网络请求结果""" - self.task_queue.remove(network_thread) - - return { + result = { "status_code": network_thread.status_code, "response_json": network_thread.response_json, - "error_message": network_thread.error_message, + "error_message": ( + re.sub(r"(&cdk=)[^&]+(&)", r"\1******\2", network_thread.error_message) + if network_thread.error_message + else None + ), } + network_thread.quit() + network_thread.wait() + self.task_queue.remove(network_thread) + network_thread.deleteLater() + + return result + Network = _Network() diff --git a/app/core/sound_player.py b/app/core/sound_player.py index 83fc6ca..2627cd1 100644 --- a/app/core/sound_player.py +++ b/app/core/sound_player.py @@ -41,27 +41,26 @@ class _SoundPlayer(QObject): self.sounds_path = Config.app_path / "resources/sounds" - def play(self, sound_name: str, parent: QObject = None): + def play(self, sound_name: str): if not Config.get(Config.voice_Enabled): return if (self.sounds_path / f"both/{sound_name}.wav").exists(): - self.play_voice(self.sounds_path / f"both/{sound_name}.wav", parent) + self.play_voice(self.sounds_path / f"both/{sound_name}.wav") elif ( self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav" ).exists(): self.play_voice( - self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav", - parent, + self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav" ) - def play_voice(self, sound_path: Path, parent: QObject): + def play_voice(self, sound_path: Path): - effect = QSoundEffect(self if parent is None else parent) + effect = QSoundEffect(self) effect.setVolume(1) effect.setSource(QUrl.fromLocalFile(sound_path)) effect.play() diff --git a/app/core/task_manager.py b/app/core/task_manager.py index bbe640c..87214ff 100644 --- a/app/core/task_manager.py +++ b/app/core/task_manager.py @@ -45,6 +45,7 @@ class Task(QThread): check_maa_version = Signal(str) push_info_bar = Signal(str, str, str, int) + play_sound = Signal(str) question = Signal(str, str) question_response = Signal(bool) update_user_info = Signal(str, dict) @@ -60,6 +61,8 @@ class Task(QThread): ): super(Task, self).__init__() + self.setObjectName(f"Task-{mode}-{name}") + self.mode = mode self.name = name self.info = info @@ -83,6 +86,7 @@ class Task(QThread): ) self.task.check_maa_version.connect(self.check_maa_version.emit) self.task.push_info_bar.connect(self.push_info_bar.emit) + self.task.play_sound.connect(self.play_sound.emit) self.task.accomplish.connect(lambda: self.accomplish.emit([])) self.task.run() @@ -142,6 +146,7 @@ class Task(QThread): self.question_response.disconnect() self.question_response.connect(self.task.question_response.emit) self.task.push_info_bar.connect(self.push_info_bar.emit) + self.task.play_sound.connect(self.play_sound.emit) self.task.create_user_list.connect(self.create_user_list.emit) self.task.update_user_list.connect(self.update_user_list.emit) self.task.update_log_text.connect(self.update_log_text.emit) @@ -201,6 +206,7 @@ class _TaskManager(QObject): lambda title, content: self.push_dialog(name, title, content) ) self.task_dict[name].push_info_bar.connect(MainInfoBar.push_info_bar) + self.task_dict[name].play_sound.connect(SoundPlayer.play) self.task_dict[name].update_user_info.connect(Config.change_user_info) self.task_dict[name].accomplish.connect( lambda logs: self.remove_task(mode, name, logs) diff --git a/app/models/MAA.py b/app/models/MAA.py index 1c6d82d..0ea319e 100644 --- a/app/models/MAA.py +++ b/app/models/MAA.py @@ -38,7 +38,7 @@ from pathlib import Path from jinja2 import Environment, FileSystemLoader from typing import Union, List, Dict -from app.core import Config, MaaConfig, MaaUserConfig, SoundPlayer +from app.core import Config, MaaConfig, MaaUserConfig from app.services import Notify, System @@ -50,6 +50,7 @@ class MaaManager(QObject): question_response = Signal(bool) update_user_info = Signal(str, dict) push_info_bar = Signal(str, str, str, int) + play_sound = Signal(str) create_user_list = Signal(list) update_user_list = Signal(list) update_log_text = Signal(str) @@ -564,9 +565,9 @@ class MaaManager(QObject): 1, ) if i == self.set["RunSet"]["RunTimesLimit"] - 1: - SoundPlayer.play("子任务失败", self) + self.play_sound.emit("子任务失败") else: - SoundPlayer.play(self.maa_result, self) + self.play_sound.emit(self.maa_result) self.sleep(10) # 任务结束后释放ADB @@ -619,7 +620,7 @@ class MaaManager(QObject): }, user_data, ) - SoundPlayer.play("六星喜报", self) + self.play_sound.emit("六星喜报") # 执行MAA解压更新动作 if self.maa_update_package: @@ -631,7 +632,7 @@ class MaaManager(QObject): self.update_log_text.emit( f"检测到MAA存在更新\nMAA正在执行更新动作\n请等待10s" ) - SoundPlayer.play("MAA更新", self) + self.play_sound.emit("MAA更新") self.set_maa("更新MAA", None) subprocess.Popen( [self.maa_exe_path], @@ -752,7 +753,7 @@ class MaaManager(QObject): # 登录失败,询问是否结束循环 elif not self.isInterruptionRequested: - SoundPlayer.play("排查重试", self) + self.play_sound.emit("排查重试") if not self.push_question( "操作提示", "MAA未能正确登录到PRTS,是否重试?" ): @@ -761,7 +762,7 @@ class MaaManager(QObject): # 登录成功,录入人工排查情况 if run_book[0] and not self.isInterruptionRequested: - SoundPlayer.play("排查录入", self) + self.play_sound.emit("排查录入") if self.push_question( "操作提示", "请检查用户代理情况,该用户是否正确完成代理任务?" ): @@ -970,7 +971,7 @@ class MaaManager(QObject): with self.maa_set_path.open(mode="w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) - SoundPlayer.play("ADB成功", self) + self.play_sound.emit("ADB成功") return None else: @@ -978,7 +979,7 @@ class MaaManager(QObject): else: logger.info(f"{self.name} | 无法连接到ADB地址:{ADB_address}") - SoundPlayer.play("ADB失败", self) + self.play_sound.emit("ADB失败") def refresh_maa_log(self) -> None: """刷新MAA日志""" diff --git a/app/ui/downloader.py b/app/ui/downloader.py index 678f6f7..bfb1dca 100644 --- a/app/ui/downloader.py +++ b/app/ui/downloader.py @@ -78,6 +78,8 @@ class DownloadProcess(QThread): ) -> None: super(DownloadProcess, self).__init__() + self.setObjectName(f"DownloadProcess-{url}-{start_byte}-{end_byte}") + self.url = url self.start_byte = start_byte self.end_byte = end_byte @@ -157,6 +159,8 @@ class ZipExtractProcess(QThread): def __init__(self, name: str, app_path: Path, download_path: Path) -> None: super(ZipExtractProcess, self).__init__() + self.setObjectName(f"ZipExtractProcess-{name}") + self.name = name self.app_path = app_path self.download_path = download_path diff --git a/resources/version.json b/resources/version.json index ed33674..daee41c 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,6 +1,11 @@ { - "main_version": "4.3.9.2", + "main_version": "4.3.9.0", "version_info": { + "4.3.9.0": { + "修复bug": [ + "修复网络模块子线程未及时销毁导致的程序崩溃" + ] + }, "4.3.9.2": { "修复bug": [ "修复语音包禁忌二重奏"