优化log文件读取策略,MAA运行判定修改前期准备
This commit is contained in:
81
AUTO_MAA.py
81
AUTO_MAA.py
@@ -129,21 +129,32 @@ class MaaRunner(QtCore.QThread):
|
|||||||
while True:
|
while True:
|
||||||
# 获取MAA日志
|
# 获取MAA日志
|
||||||
logs = []
|
logs = []
|
||||||
|
IfLogStart = False
|
||||||
with open(self.LogPath, "r", encoding="utf-8") as f:
|
with open(self.LogPath, "r", encoding="utf-8") as f:
|
||||||
for entry in f:
|
for entry in f:
|
||||||
try:
|
if not IfLogStart:
|
||||||
entry_time = datetime.datetime.strptime(
|
try:
|
||||||
entry[1:20], "%Y-%m-%d %H:%M:%S"
|
entry_time = datetime.datetime.strptime(
|
||||||
)
|
entry[1:20], "%Y-%m-%d %H:%M:%S"
|
||||||
if entry_time > StartTime:
|
)
|
||||||
logs.append(entry)
|
if entry_time > StartTime:
|
||||||
except ValueError:
|
IfLogStart = True
|
||||||
pass
|
logs.append(entry)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
logs.append(entry)
|
||||||
# 判断是否超时
|
# 判断是否超时
|
||||||
if len(logs) > 0:
|
if len(logs) > 0:
|
||||||
LastTime = datetime.datetime.strptime(
|
LastTime = datetime.datetime.now()
|
||||||
logs[-1][1:20], "%Y-%m-%d %H:%M:%S"
|
for i in range(-1, 0 - len(logs) - 1, -1):
|
||||||
)
|
try:
|
||||||
|
LastTime = datetime.datetime.strptime(
|
||||||
|
logs[i][1:20], "%Y-%m-%d %H:%M:%S"
|
||||||
|
)
|
||||||
|
break
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
NowTime = datetime.datetime.now()
|
NowTime = datetime.datetime.now()
|
||||||
if (
|
if (
|
||||||
j == 0
|
j == 0
|
||||||
@@ -175,7 +186,8 @@ class MaaRunner(QtCore.QThread):
|
|||||||
log,
|
log,
|
||||||
)
|
)
|
||||||
# 判断MAA程序运行状态
|
# 判断MAA程序运行状态
|
||||||
if "任务已全部完成!" in log:
|
result = self.IfMaaSuccess(log)
|
||||||
|
if result == "Success!":
|
||||||
runbook[j] = True
|
runbook[j] = True
|
||||||
self.UpGui.emit(
|
self.UpGui.emit(
|
||||||
self.data[uid][0] + "_第" + str(i + 1) + "次_日常",
|
self.data[uid][0] + "_第" + str(i + 1) + "次_日常",
|
||||||
@@ -186,41 +198,23 @@ class MaaRunner(QtCore.QThread):
|
|||||||
)
|
)
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
break
|
break
|
||||||
elif (
|
elif result == "Wait":
|
||||||
("请检查连接设置或尝试重启模拟器与 ADB 或重启电脑" in log)
|
# 检测时间间隔
|
||||||
or ("已停止" in log)
|
time.sleep(1)
|
||||||
or ("MaaAssistantArknights GUI exited" in log)
|
else:
|
||||||
or self.TimeOut
|
|
||||||
or not self.ifRun
|
|
||||||
):
|
|
||||||
# 打印中止信息
|
# 打印中止信息
|
||||||
# 此时,log变量内存储的就是出现异常的日志信息,可以保存或发送用于问题排查
|
# 此时,log变量内存储的就是出现异常的日志信息,可以保存或发送用于问题排查
|
||||||
if (
|
|
||||||
(
|
|
||||||
"请检查连接设置或尝试重启模拟器与 ADB 或重启电脑"
|
|
||||||
in log
|
|
||||||
)
|
|
||||||
or ("已停止" in log)
|
|
||||||
or ("MaaAssistantArknights GUI exited" in log)
|
|
||||||
):
|
|
||||||
info = "检测到MAA进程异常\n正在中止相关程序\n请等待10s"
|
|
||||||
elif self.TimeOut:
|
|
||||||
info = "检测到MAA进程超时\n正在中止相关程序\n请等待10s"
|
|
||||||
elif not self.ifRun:
|
|
||||||
info = "您中止了本次任务\n正在中止相关程序\n请等待"
|
|
||||||
self.UpGui.emit(
|
self.UpGui.emit(
|
||||||
self.data[uid][0] + "_第" + str(i + 1) + "次_日常",
|
self.data[uid][0] + "_第" + str(i + 1) + "次_日常",
|
||||||
"\n".join([self.data[k][0] for k in WaitUid]),
|
"\n".join([self.data[k][0] for k in WaitUid]),
|
||||||
"\n".join([self.data[k][0] for k in OverUid]),
|
"\n".join([self.data[k][0] for k in OverUid]),
|
||||||
"\n".join([self.data[k][0] for k in ErrorUid]),
|
"\n".join([self.data[k][0] for k in ErrorUid]),
|
||||||
info,
|
result,
|
||||||
)
|
)
|
||||||
os.system("taskkill /F /T /PID " + str(maa.pid))
|
os.system("taskkill /F /T /PID " + str(maa.pid))
|
||||||
if self.ifRun:
|
if self.ifRun:
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
break
|
break
|
||||||
# 检测时间间隔
|
|
||||||
time.sleep(1)
|
|
||||||
if runbook[0] and runbook[1]:
|
if runbook[0] and runbook[1]:
|
||||||
if self.data[uid][12] == 0:
|
if self.data[uid][12] == 0:
|
||||||
self.data[uid][2] -= 1
|
self.data[uid][2] -= 1
|
||||||
@@ -257,6 +251,23 @@ class MaaRunner(QtCore.QThread):
|
|||||||
self.Accomplish.emit()
|
self.Accomplish.emit()
|
||||||
self.ifRun = False
|
self.ifRun = False
|
||||||
|
|
||||||
|
# 判断MAA程序运行状态
|
||||||
|
def IfMaaSuccess(self, log):
|
||||||
|
if "任务已全部完成!" in log:
|
||||||
|
return "Success!"
|
||||||
|
elif (
|
||||||
|
("请检查连接设置或尝试重启模拟器与 ADB 或重启电脑" in log)
|
||||||
|
or ("已停止" in log)
|
||||||
|
or ("MaaAssistantArknights GUI exited" in log)
|
||||||
|
):
|
||||||
|
return "检测到MAA进程异常\n正在中止相关程序\n请等待10s"
|
||||||
|
elif self.TimeOut:
|
||||||
|
return "检测到MAA进程超时\n正在中止相关程序\n请等待10s"
|
||||||
|
elif not self.ifRun:
|
||||||
|
return "您中止了本次任务\n正在中止相关程序\n请等待"
|
||||||
|
else:
|
||||||
|
return "Wait"
|
||||||
|
|
||||||
# 配置MAA运行参数
|
# 配置MAA运行参数
|
||||||
def SetMaa(self, s, uid):
|
def SetMaa(self, s, uid):
|
||||||
with open(self.SetPath, "r", encoding="utf-8") as f:
|
with open(self.SetPath, "r", encoding="utf-8") as f:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ MAA多账号管理与自动化软件
|
|||||||
----------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
## 重要声明
|
## 重要声明
|
||||||
本软件是一个外部工具,旨在优化MAA多账号功能体验。该软件包可以存储明日方舟多账号数据,并通过修改MAA配置文件、读取MAA日志等行为自动完成多账号代理。本开发团队承诺,不会修改明日方舟游戏本体与相关配置文件。
|
本软件是一个外部工具,旨在优化MAA多账号功能体验,并通过一些方法解决MAA项目未能解决的部分问题,改善代理的稳定性。该软件包可以存储明日方舟多账号数据,并通过修改MAA配置文件、读取MAA日志等行为自动完成多账号代理。本开发团队承诺,不会修改明日方舟游戏本体与相关配置文件。
|
||||||
|
|
||||||
本项目使用GPL开源,相关细则如下:
|
本项目使用GPL开源,相关细则如下:
|
||||||
|
|
||||||
@@ -112,7 +112,9 @@ QQ群:957750551
|
|||||||
|
|
||||||
----------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
作者即将高考,如果喜欢本项目,请祝福他
|
如果喜欢这个项目,可以打赏作者一杯咖啡吗?
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
----------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------
|
||||||
## 贡献者
|
## 贡献者
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 746 KiB After Width: | Height: | Size: 309 KiB |
@@ -4,7 +4,7 @@ VSVersionInfo(
|
|||||||
ffi=FixedFileInfo(
|
ffi=FixedFileInfo(
|
||||||
# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
|
# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
|
||||||
# Set not needed items to zero 0.
|
# Set not needed items to zero 0.
|
||||||
filevers=(3, 1, 2, 0),
|
filevers=(3, 1, 2, 1),
|
||||||
prodvers=(0, 0, 0, 0),
|
prodvers=(0, 0, 0, 0),
|
||||||
# Contains a bitmask that specifies the valid bits 'flags'r
|
# Contains a bitmask that specifies the valid bits 'flags'r
|
||||||
mask=0x3f,
|
mask=0x3f,
|
||||||
@@ -31,13 +31,13 @@ VSVersionInfo(
|
|||||||
[StringStruct('Comments', 'https://github.com/DLmaster361/AUTO_MAA/'),
|
[StringStruct('Comments', 'https://github.com/DLmaster361/AUTO_MAA/'),
|
||||||
StringStruct('CompanyName', 'AUTO_MAA Team'),
|
StringStruct('CompanyName', 'AUTO_MAA Team'),
|
||||||
StringStruct('FileDescription', 'AUTO_MAA Component'),
|
StringStruct('FileDescription', 'AUTO_MAA Component'),
|
||||||
StringStruct('FileVersion', '3.1.2'),
|
StringStruct('FileVersion', '3.1.2.1'),
|
||||||
StringStruct('InternalName', 'AUTO_MAA'),
|
StringStruct('InternalName', 'AUTO_MAA'),
|
||||||
StringStruct('LegalCopyright', 'Copyright © 2024 DLmaster361'),
|
StringStruct('LegalCopyright', 'Copyright © 2024 DLmaster361'),
|
||||||
StringStruct('OriginalFilename', 'AUTO_MAA.py'),
|
StringStruct('OriginalFilename', 'AUTO_MAA.py'),
|
||||||
StringStruct('ProductName', 'AUTO_MAA'),
|
StringStruct('ProductName', 'AUTO_MAA'),
|
||||||
StringStruct('ProductVersion', 'v3.1.2'),
|
StringStruct('ProductVersion', 'v3.1.2.1'),
|
||||||
StringStruct('Assembly Version', 'v3.1.2')])
|
StringStruct('Assembly Version', 'v3.1.2.1')])
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
12
更新说明.txt
12
更新说明.txt
@@ -1,9 +1,15 @@
|
|||||||
v3.1.2
|
v3.1.2_Beta
|
||||||
## 修复BUG
|
## 修复BUG
|
||||||
- 更新MAA的配置方法,使之适配最新版本
|
- 无
|
||||||
|
## 程序优化
|
||||||
|
- 优化log文件读取策略,可以读取无时间戳的日志
|
||||||
|
- 优化MAA运行判定,为后续开发打基础
|
||||||
## 更新说明
|
## 更新说明
|
||||||
- 项目初始阶段,不会提供专门的版本更新程序,您需要手动更新程序。
|
- 项目初始阶段,不会提供专门的版本更新程序,您需要手动更新程序。
|
||||||
- v2.1.5及以前的用户,由于新版本采用全新的架构,您需要手动输入之前的信息。
|
- v2.1.5及以前的用户,由于新版本采用全新的架构,您需要手动输入之前的信息。
|
||||||
- v3.0_Beta版用户,直接用AUTO_MAA.exe替代gui.exe后,将原文件夹下的gui文件夹用新版本对应文件替换,重新设置每个用户的“自定义基建”选项(输入“-”以关闭该功能,输入自定义基建配置文件地址以开启该功能)。
|
- v3.0_Beta版用户,直接用AUTO_MAA.exe替代gui.exe后,将原文件夹下的gui文件夹用新版本对应文件替换,重新设置每个用户的“自定义基建”选项(输入“-”以关闭该功能,输入自定义基建配置文件地址以开启该功能)。
|
||||||
- v3.1~v3.1.1版用户,将原文件夹下的AUTO_MAA.exe文件和gui文件夹用新版本对应文件替换即可。
|
- v3.1~v3.1.2版用户,将原文件夹下的AUTO_MAA.exe文件和gui文件夹用新版本对应文件替换即可。
|
||||||
- 新用户请忽略本说明。
|
- 新用户请忽略本说明。
|
||||||
|
|
||||||
|
|
||||||
|
```内测版,普通用户请忽略```
|
||||||
Reference in New Issue
Block a user