feat: 新增MAA稳定版更新提醒
This commit is contained in:
@@ -29,10 +29,12 @@ from loguru import logger
|
||||
from PySide6.QtCore import QThread, QObject, Signal
|
||||
from qfluentwidgets import MessageBox
|
||||
from datetime import datetime
|
||||
from packaging import version
|
||||
from typing import Dict, Union
|
||||
|
||||
from .config import Config
|
||||
from .main_info_bar import MainInfoBar
|
||||
from .network import Network
|
||||
from app.models import MaaManager
|
||||
from app.services import System
|
||||
|
||||
@@ -40,6 +42,7 @@ from app.services import System
|
||||
class Task(QThread):
|
||||
"""业务线程"""
|
||||
|
||||
check_maa_version = Signal(str)
|
||||
push_info_bar = Signal(str, str, str, int)
|
||||
question = Signal(str, str)
|
||||
question_response = Signal(bool)
|
||||
@@ -77,6 +80,7 @@ class Task(QThread):
|
||||
Config.member_dict[self.name],
|
||||
(None if "全局" in self.mode else self.info["SetMaaInfo"]["Path"]),
|
||||
)
|
||||
self.task.check_maa_version.connect(self.check_maa_version.emit)
|
||||
self.task.push_info_bar.connect(self.push_info_bar.emit)
|
||||
self.task.accomplish.connect(lambda: self.accomplish.emit([]))
|
||||
|
||||
@@ -132,6 +136,7 @@ class Task(QThread):
|
||||
Config.member_dict[task[2]],
|
||||
)
|
||||
|
||||
self.task.check_maa_version.connect(self.check_maa_version.emit)
|
||||
self.task.question.connect(self.question.emit)
|
||||
self.question_response.disconnect()
|
||||
self.question_response.connect(self.task.question_response.emit)
|
||||
@@ -166,7 +171,6 @@ class _TaskManager(QObject):
|
||||
|
||||
create_gui = Signal(Task)
|
||||
connect_gui = Signal(Task)
|
||||
push_info_bar = Signal(str, str, str, int)
|
||||
|
||||
def __init__(self, main_window=None):
|
||||
super(_TaskManager, self).__init__()
|
||||
@@ -190,6 +194,7 @@ class _TaskManager(QObject):
|
||||
|
||||
Config.running_list.append(name)
|
||||
self.task_dict[name] = Task(mode, name, info)
|
||||
self.task_dict[name].check_maa_version.connect(self.check_maa_version)
|
||||
self.task_dict[name].question.connect(
|
||||
lambda title, content: self.push_dialog(name, title, content)
|
||||
)
|
||||
@@ -283,6 +288,39 @@ class _TaskManager(QObject):
|
||||
)
|
||||
)
|
||||
|
||||
def check_maa_version(self, v: str):
|
||||
"""检查MAA版本"""
|
||||
|
||||
Network.set_info(
|
||||
mode="get",
|
||||
url="https://mirrorchyan.com/api/resources/MAA/latest?user_agent=AutoMaaGui&os=win&arch=x64&channel=stable",
|
||||
)
|
||||
Network.start()
|
||||
Network.loop.exec()
|
||||
if Network.stutus_code == 200:
|
||||
maa_info = Network.response_json
|
||||
else:
|
||||
logger.warning(f"获取MAA版本信息时出错:{Network.error_message}")
|
||||
MainInfoBar.push_info_bar(
|
||||
"warning",
|
||||
"获取MAA版本信息时出错",
|
||||
f"网络错误:{Network.stutus_code}",
|
||||
5000,
|
||||
)
|
||||
return None
|
||||
|
||||
if version.parse(maa_info["data"]["version_name"]) > version.parse(v):
|
||||
|
||||
logger.info(
|
||||
f"检测到MAA版本过低:{v},最新版本:{maa_info['data']['version_name']}"
|
||||
)
|
||||
MainInfoBar.push_info_bar(
|
||||
"info",
|
||||
"MAA版本过低",
|
||||
f"当前版本:{v},最新稳定版:{maa_info['data']['version_name']}",
|
||||
-1,
|
||||
)
|
||||
|
||||
def push_dialog(self, name: str, title: str, content: str):
|
||||
"""推送对话框"""
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ from datetime import datetime, timedelta
|
||||
import subprocess
|
||||
import shutil
|
||||
import time
|
||||
import re
|
||||
from pathlib import Path
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from typing import Union, List, Dict
|
||||
@@ -43,6 +44,7 @@ from app.services import Notify, System
|
||||
class MaaManager(QObject):
|
||||
"""MAA控制器"""
|
||||
|
||||
check_maa_version = Signal(str)
|
||||
question = Signal(str, str)
|
||||
question_response = Signal(bool)
|
||||
update_user_info = Signal(str, dict)
|
||||
@@ -87,6 +89,7 @@ class MaaManager(QObject):
|
||||
|
||||
self.interrupt.connect(self.quit_monitor)
|
||||
|
||||
self.maa_version = None
|
||||
self.set = config["Config"].toDict()
|
||||
|
||||
self.data = {}
|
||||
@@ -743,6 +746,19 @@ class MaaManager(QObject):
|
||||
else:
|
||||
self.update_log_text.emit("".join(logs))
|
||||
|
||||
# 获取MAA版本号
|
||||
if not self.maa_version:
|
||||
|
||||
section_match = re.search(r"={35}(.*?)={35}", log, re.DOTALL)
|
||||
if section_match:
|
||||
|
||||
version_match = re.search(
|
||||
r"Version\s+v(\d+\.\d+\.\d+(?:-\w+\.\d+)?)", section_match.group(1)
|
||||
)
|
||||
if version_match:
|
||||
self.maa_version = f"v{version_match.group(1)}"
|
||||
self.check_maa_version.emit(self.maa_version)
|
||||
|
||||
if "自动代理" in mode:
|
||||
|
||||
# 获取最近一条日志的时间
|
||||
@@ -765,22 +781,23 @@ class MaaManager(QObject):
|
||||
self.weekly_annihilation_limit_reached = False
|
||||
|
||||
if mode == "自动代理_日常" and "任务出错: Fight" in log:
|
||||
self.maa_result = "检测到MAA未能实际执行任务"
|
||||
self.maa_result = "MAA未能实际执行任务"
|
||||
elif "任务出错: StartUp" in log:
|
||||
self.maa_result = "检测到MAA未能正确登录PRTS"
|
||||
self.maa_result = "MAA未能正确登录PRTS"
|
||||
elif "任务已全部完成!" in log:
|
||||
self.maa_result = "Success!"
|
||||
elif (
|
||||
("请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log)
|
||||
or ("未检测到任何模拟器" in log)
|
||||
or ("已停止" in log)
|
||||
or ("MaaAssistantArknights GUI exited" in log)
|
||||
):
|
||||
self.maa_result = "检测到MAA进程异常"
|
||||
elif "请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log:
|
||||
self.maa_result = "MAA的ADB连接异常"
|
||||
elif "未检测到任何模拟器" in log:
|
||||
self.maa_result = "MAA未检测到任何模拟器"
|
||||
elif "已停止" in log:
|
||||
self.maa_result = "MAA在完成任务前中止"
|
||||
elif "MaaAssistantArknights GUI exited" in log:
|
||||
self.maa_result = "MAA在完成任务前退出"
|
||||
elif datetime.now() - latest_time > timedelta(
|
||||
minutes=self.set["RunSet"][time_book[mode]]
|
||||
):
|
||||
self.maa_result = "检测到MAA进程超时"
|
||||
self.maa_result = "MAA进程超时"
|
||||
elif self.isInterruptionRequested:
|
||||
self.maa_result = "任务被手动中止"
|
||||
else:
|
||||
@@ -789,13 +806,14 @@ class MaaManager(QObject):
|
||||
elif mode == "人工排查":
|
||||
if "完成任务: StartUp" in log:
|
||||
self.maa_result = "Success!"
|
||||
elif (
|
||||
("请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log)
|
||||
or ("未检测到任何模拟器" in log)
|
||||
or ("已停止" in log)
|
||||
or ("MaaAssistantArknights GUI exited" in log)
|
||||
):
|
||||
self.maa_result = "检测到MAA进程异常"
|
||||
elif "请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log:
|
||||
self.maa_result = "MAA的ADB连接异常"
|
||||
elif "未检测到任何模拟器" in log:
|
||||
self.maa_result = "MAA未检测到任何模拟器"
|
||||
elif "已停止" in log:
|
||||
self.maa_result = "MAA在完成任务前中止"
|
||||
elif "MaaAssistantArknights GUI exited" in log:
|
||||
self.maa_result = "MAA在完成任务前退出"
|
||||
elif self.isInterruptionRequested:
|
||||
self.maa_result = "任务被手动中止"
|
||||
else:
|
||||
|
||||
@@ -299,7 +299,7 @@ class Setting(QWidget):
|
||||
7002: "填入的 CDK 错误",
|
||||
7003: "填入的 CDK 今日下载次数已达上限",
|
||||
7004: "填入的 CDK 类型和待下载的资源不匹配",
|
||||
7005: "填入的 CDK 不合法",
|
||||
7005: "填入的 CDK 已被封禁",
|
||||
8001: "对应架构和系统下的资源不存在",
|
||||
8002: "错误的系统参数",
|
||||
8003: "错误的架构参数",
|
||||
|
||||
@@ -229,18 +229,12 @@ class DownloadManager(QDialog):
|
||||
|
||||
isInterruptionRequested = False
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
app_path: Path,
|
||||
name: str,
|
||||
main_version: list,
|
||||
config: dict,
|
||||
) -> None:
|
||||
def __init__(self, app_path: Path, name: str, version: list, config: dict) -> None:
|
||||
super().__init__()
|
||||
|
||||
self.app_path = app_path
|
||||
self.name = name
|
||||
self.main_version = main_version
|
||||
self.version = version
|
||||
self.config = config
|
||||
self.download_path = app_path / "DOWNLOAD_TEMP.zip" # 临时下载文件的路径
|
||||
self.version_path = app_path / "resources/version.json"
|
||||
@@ -289,25 +283,25 @@ class DownloadManager(QDialog):
|
||||
if mode == "测速":
|
||||
|
||||
url_dict["GitHub站"] = (
|
||||
f"https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.main_version)}/AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
f"https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.version)}/AUTO_MAA_{version_text(self.version)}.zip"
|
||||
)
|
||||
url_dict["官方镜像站"] = (
|
||||
f"https://gitee.com/DLmaster_361/AUTO_MAA/releases/download/{version_text(self.main_version)}/AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
f"https://gitee.com/DLmaster_361/AUTO_MAA/releases/download/{version_text(self.version)}/AUTO_MAA_{version_text(self.version)}.zip"
|
||||
)
|
||||
for name, download_url_head in self.config["download_dict"].items():
|
||||
url_dict[name] = (
|
||||
f"{download_url_head}AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
f"{download_url_head}AUTO_MAA_{version_text(self.version)}.zip"
|
||||
)
|
||||
for proxy_url in self.config["proxy_list"]:
|
||||
url_dict[proxy_url] = (
|
||||
f"{proxy_url}https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.main_version)}/AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
f"{proxy_url}https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.version)}/AUTO_MAA_{version_text(self.version)}.zip"
|
||||
)
|
||||
return url_dict
|
||||
|
||||
elif mode == "下载":
|
||||
|
||||
if self.name == "MAA":
|
||||
return f"https://jp-download.fearr.xyz/MAA/MAA-{version_text(self.main_version)}-win-x64.zip"
|
||||
return f"https://jp-download.fearr.xyz/MAA/MAA-{version_text(self.version)}-win-x64.zip"
|
||||
|
||||
if self.name == "AUTO_MAA":
|
||||
|
||||
@@ -322,13 +316,13 @@ class DownloadManager(QDialog):
|
||||
)
|
||||
|
||||
if selected_url == "GitHub站":
|
||||
return f"https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.main_version)}/AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
return f"https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.version)}/AUTO_MAA_{version_text(self.version)}.zip"
|
||||
elif selected_url == "官方镜像站":
|
||||
return f"https://gitee.com/DLmaster_361/AUTO_MAA/releases/download/{version_text(self.main_version)}/AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
return f"https://gitee.com/DLmaster_361/AUTO_MAA/releases/download/{version_text(self.version)}/AUTO_MAA_{version_text(self.version)}.zip"
|
||||
elif selected_url in self.config["download_dict"].keys():
|
||||
return f"{self.config["download_dict"][selected_url]}AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
return f"{self.config["download_dict"][selected_url]}AUTO_MAA_{version_text(self.version)}.zip"
|
||||
else:
|
||||
return f"{selected_url}https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.main_version)}/AUTO_MAA_{version_text(self.main_version)}.zip"
|
||||
return f"{selected_url}https://github.com/DLmaster361/AUTO_MAA/releases/download/{version_text(self.version)}/AUTO_MAA_{version_text(self.version)}.zip"
|
||||
|
||||
elif self.config["mode"] == "MirrorChyan":
|
||||
with requests.get(
|
||||
|
||||
Reference in New Issue
Block a user