Merge branch 'dev'

This commit is contained in:
DLmaster361
2025-06-01 20:04:16 +08:00
8 changed files with 55 additions and 23 deletions

View File

@@ -572,7 +572,7 @@ class MaaPlanConfig(LQConfig):
class AppConfig(GlobalConfig): class AppConfig(GlobalConfig):
VERSION = "4.3.9.1" VERSION = "4.3.9.0"
gameid_refreshed = Signal() gameid_refreshed = Signal()
PASSWORD_refreshed = Signal() PASSWORD_refreshed = Signal()

View File

@@ -27,6 +27,7 @@ v4.3
from loguru import logger from loguru import logger
from PySide6.QtCore import QObject, QThread, QEventLoop from PySide6.QtCore import QObject, QThread, QEventLoop
import re
import time import time
import requests import requests
from pathlib import Path from pathlib import Path
@@ -42,6 +43,10 @@ class NetworkThread(QThread):
def __init__(self, mode: str, url: str, path: Path = None) -> None: def __init__(self, mode: str, url: str, path: Path = None) -> None:
super().__init__() super().__init__()
self.setObjectName(
f"NetworkThread-{mode}-{re.sub(r'(&cdk=)[^&]+(&)', r'\1******\2', url)}"
)
self.mode = mode self.mode = mode
self.url = url self.url = url
self.path = path self.path = path
@@ -125,13 +130,22 @@ class _Network(QObject):
def get_result(self, network_thread: NetworkThread) -> dict: def get_result(self, network_thread: NetworkThread) -> dict:
"""获取网络请求结果""" """获取网络请求结果"""
self.task_queue.remove(network_thread) result = {
return {
"status_code": network_thread.status_code, "status_code": network_thread.status_code,
"response_json": network_thread.response_json, "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() Network = _Network()

View File

@@ -41,27 +41,26 @@ class _SoundPlayer(QObject):
self.sounds_path = Config.app_path / "resources/sounds" 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): if not Config.get(Config.voice_Enabled):
return return
if (self.sounds_path / f"both/{sound_name}.wav").exists(): 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 ( elif (
self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav" self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav"
).exists(): ).exists():
self.play_voice( self.play_voice(
self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav", self.sounds_path / Config.get(Config.voice_Type) / f"{sound_name}.wav"
parent,
) )
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.setVolume(1)
effect.setSource(QUrl.fromLocalFile(sound_path)) effect.setSource(QUrl.fromLocalFile(sound_path))
effect.play() effect.play()

View File

@@ -45,6 +45,7 @@ class Task(QThread):
check_maa_version = Signal(str) check_maa_version = Signal(str)
push_info_bar = Signal(str, str, str, int) push_info_bar = Signal(str, str, str, int)
play_sound = Signal(str)
question = Signal(str, str) question = Signal(str, str)
question_response = Signal(bool) question_response = Signal(bool)
update_user_info = Signal(str, dict) update_user_info = Signal(str, dict)
@@ -60,6 +61,8 @@ class Task(QThread):
): ):
super(Task, self).__init__() super(Task, self).__init__()
self.setObjectName(f"Task-{mode}-{name}")
self.mode = mode self.mode = mode
self.name = name self.name = name
self.info = info self.info = info
@@ -83,6 +86,7 @@ class Task(QThread):
) )
self.task.check_maa_version.connect(self.check_maa_version.emit) self.task.check_maa_version.connect(self.check_maa_version.emit)
self.task.push_info_bar.connect(self.push_info_bar.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.accomplish.connect(lambda: self.accomplish.emit([]))
self.task.run() self.task.run()
@@ -142,6 +146,7 @@ class Task(QThread):
self.question_response.disconnect() self.question_response.disconnect()
self.question_response.connect(self.task.question_response.emit) self.question_response.connect(self.task.question_response.emit)
self.task.push_info_bar.connect(self.push_info_bar.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.create_user_list.connect(self.create_user_list.emit)
self.task.update_user_list.connect(self.update_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) 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) 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].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].update_user_info.connect(Config.change_user_info)
self.task_dict[name].accomplish.connect( self.task_dict[name].accomplish.connect(
lambda logs: self.remove_task(mode, name, logs) lambda logs: self.remove_task(mode, name, logs)

View File

@@ -38,7 +38,7 @@ from pathlib import Path
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from typing import Union, List, Dict 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 from app.services import Notify, System
@@ -50,6 +50,7 @@ class MaaManager(QObject):
question_response = Signal(bool) question_response = Signal(bool)
update_user_info = Signal(str, dict) update_user_info = Signal(str, dict)
push_info_bar = Signal(str, str, str, int) push_info_bar = Signal(str, str, str, int)
play_sound = Signal(str)
create_user_list = Signal(list) create_user_list = Signal(list)
update_user_list = Signal(list) update_user_list = Signal(list)
update_log_text = Signal(str) update_log_text = Signal(str)
@@ -564,9 +565,9 @@ class MaaManager(QObject):
1, 1,
) )
if i == self.set["RunSet"]["RunTimesLimit"] - 1: if i == self.set["RunSet"]["RunTimesLimit"] - 1:
SoundPlayer.play("子任务失败", self) self.play_sound.emit("子任务失败")
else: else:
SoundPlayer.play(self.maa_result, self) self.play_sound.emit(self.maa_result)
self.sleep(10) self.sleep(10)
# 任务结束后释放ADB # 任务结束后释放ADB
@@ -619,7 +620,7 @@ class MaaManager(QObject):
}, },
user_data, user_data,
) )
SoundPlayer.play("六星喜报", self) self.play_sound.emit("六星喜报")
# 执行MAA解压更新动作 # 执行MAA解压更新动作
if self.maa_update_package: if self.maa_update_package:
@@ -631,7 +632,7 @@ class MaaManager(QObject):
self.update_log_text.emit( self.update_log_text.emit(
f"检测到MAA存在更新\nMAA正在执行更新动作\n请等待10s" f"检测到MAA存在更新\nMAA正在执行更新动作\n请等待10s"
) )
SoundPlayer.play("MAA更新", self) self.play_sound.emit("MAA更新")
self.set_maa("更新MAA", None) self.set_maa("更新MAA", None)
subprocess.Popen( subprocess.Popen(
[self.maa_exe_path], [self.maa_exe_path],
@@ -752,7 +753,7 @@ class MaaManager(QObject):
# 登录失败,询问是否结束循环 # 登录失败,询问是否结束循环
elif not self.isInterruptionRequested: elif not self.isInterruptionRequested:
SoundPlayer.play("排查重试", self) self.play_sound.emit("排查重试")
if not self.push_question( if not self.push_question(
"操作提示", "MAA未能正确登录到PRTS是否重试" "操作提示", "MAA未能正确登录到PRTS是否重试"
): ):
@@ -761,7 +762,7 @@ class MaaManager(QObject):
# 登录成功,录入人工排查情况 # 登录成功,录入人工排查情况
if run_book[0] and not self.isInterruptionRequested: if run_book[0] and not self.isInterruptionRequested:
SoundPlayer.play("排查录入", self) self.play_sound.emit("排查录入")
if self.push_question( if self.push_question(
"操作提示", "请检查用户代理情况,该用户是否正确完成代理任务?" "操作提示", "请检查用户代理情况,该用户是否正确完成代理任务?"
): ):
@@ -970,7 +971,7 @@ class MaaManager(QObject):
with self.maa_set_path.open(mode="w", encoding="utf-8") as f: with self.maa_set_path.open(mode="w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4) json.dump(data, f, ensure_ascii=False, indent=4)
SoundPlayer.play("ADB成功", self) self.play_sound.emit("ADB成功")
return None return None
else: else:
@@ -978,7 +979,7 @@ class MaaManager(QObject):
else: else:
logger.info(f"{self.name} | 无法连接到ADB地址{ADB_address}") logger.info(f"{self.name} | 无法连接到ADB地址{ADB_address}")
SoundPlayer.play("ADB失败", self) self.play_sound.emit("ADB失败")
def refresh_maa_log(self) -> None: def refresh_maa_log(self) -> None:
"""刷新MAA日志""" """刷新MAA日志"""

View File

@@ -78,6 +78,8 @@ class DownloadProcess(QThread):
) -> None: ) -> None:
super(DownloadProcess, self).__init__() super(DownloadProcess, self).__init__()
self.setObjectName(f"DownloadProcess-{url}-{start_byte}-{end_byte}")
self.url = url self.url = url
self.start_byte = start_byte self.start_byte = start_byte
self.end_byte = end_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: def __init__(self, name: str, app_path: Path, download_path: Path) -> None:
super(ZipExtractProcess, self).__init__() super(ZipExtractProcess, self).__init__()
self.setObjectName(f"ZipExtractProcess-{name}")
self.name = name self.name = name
self.app_path = app_path self.app_path = app_path
self.download_path = download_path self.download_path = download_path

View File

@@ -379,8 +379,6 @@ class AUTO_MAA(MSFluentWindow):
self.titleBar.minBtn.click() self.titleBar.minBtn.click()
SoundPlayer.play("MAA在完成任务前退出")
def clean_old_logs(self): def clean_old_logs(self):
""" """
删除超过用户设定天数的日志文件(基于目录日期) 删除超过用户设定天数的日志文件(基于目录日期)

View File

@@ -1,6 +1,16 @@
{ {
"main_version": "4.3.9.1", "main_version": "4.3.9.0",
"version_info": { "version_info": {
"4.3.9.0": {
"修复bug": [
"修复网络模块子线程未及时销毁导致的程序崩溃"
]
},
"4.3.9.2": {
"修复bug": [
"修复语音包禁忌二重奏"
]
},
"4.3.9.1": { "4.3.9.1": {
"新增功能": [ "新增功能": [
"语音功能上线" "语音功能上线"