diff --git a/AUTO_MAA.py b/AUTO_MAA.py index 7d7cded..b28d5b8 100644 --- a/AUTO_MAA.py +++ b/AUTO_MAA.py @@ -129,21 +129,32 @@ class MaaRunner(QtCore.QThread): while True: # 获取MAA日志 logs = [] + IfLogStart = False with open(self.LogPath, "r", encoding="utf-8") as f: for entry in f: - try: - entry_time = datetime.datetime.strptime( - entry[1:20], "%Y-%m-%d %H:%M:%S" - ) - if entry_time > StartTime: - logs.append(entry) - except ValueError: - pass + if not IfLogStart: + try: + entry_time = datetime.datetime.strptime( + entry[1:20], "%Y-%m-%d %H:%M:%S" + ) + if entry_time > StartTime: + IfLogStart = True + logs.append(entry) + except ValueError: + pass + else: + logs.append(entry) # 判断是否超时 if len(logs) > 0: - LastTime = datetime.datetime.strptime( - logs[-1][1:20], "%Y-%m-%d %H:%M:%S" - ) + LastTime = datetime.datetime.now() + 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() if ( j == 0 @@ -175,7 +186,8 @@ class MaaRunner(QtCore.QThread): log, ) # 判断MAA程序运行状态 - if "任务已全部完成!" in log: + result = self.IfMaaSuccess(log) + if result == "Success!": runbook[j] = True self.UpGui.emit( self.data[uid][0] + "_第" + str(i + 1) + "次_日常", @@ -186,41 +198,23 @@ class MaaRunner(QtCore.QThread): ) time.sleep(10) break - elif ( - ("请检查连接设置或尝试重启模拟器与 ADB 或重启电脑" in log) - or ("已停止" in log) - or ("MaaAssistantArknights GUI exited" in log) - or self.TimeOut - or not self.ifRun - ): + elif result == "Wait": + # 检测时间间隔 + time.sleep(1) + else: # 打印中止信息 # 此时,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.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 OverUid]), "\n".join([self.data[k][0] for k in ErrorUid]), - info, + result, ) os.system("taskkill /F /T /PID " + str(maa.pid)) if self.ifRun: time.sleep(10) break - # 检测时间间隔 - time.sleep(1) if runbook[0] and runbook[1]: if self.data[uid][12] == 0: self.data[uid][2] -= 1 @@ -257,6 +251,23 @@ class MaaRunner(QtCore.QThread): self.Accomplish.emit() 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运行参数 def SetMaa(self, s, uid): with open(self.SetPath, "r", encoding="utf-8") as f: diff --git a/README.md b/README.md index ad11d76..b125aaf 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ MAA多账号管理与自动化软件 ---------------------------------------------------------------------------------------------- ## 重要声明 -本软件是一个外部工具,旨在优化MAA多账号功能体验。该软件包可以存储明日方舟多账号数据,并通过修改MAA配置文件、读取MAA日志等行为自动完成多账号代理。本开发团队承诺,不会修改明日方舟游戏本体与相关配置文件。 +本软件是一个外部工具,旨在优化MAA多账号功能体验,并通过一些方法解决MAA项目未能解决的部分问题,改善代理的稳定性。该软件包可以存储明日方舟多账号数据,并通过修改MAA配置文件、读取MAA日志等行为自动完成多账号代理。本开发团队承诺,不会修改明日方舟游戏本体与相关配置文件。 本项目使用GPL开源,相关细则如下: @@ -112,7 +112,9 @@ QQ群:957750551 ---------------------------------------------------------------------------------------------- -作者即将高考,如果喜欢本项目,请祝福他 +如果喜欢这个项目,可以打赏作者一杯咖啡吗? + +![payid](https://github.com/DLmaster361/AUTO_MAA/blob/main/res/README/payid.png "payid") ---------------------------------------------------------------------------------------------- ## 贡献者 diff --git a/res/README/payid.png b/res/README/payid.png index 6dd5ebe..91b671e 100644 Binary files a/res/README/payid.png and b/res/README/payid.png differ diff --git a/res/info.txt b/res/info.txt index 581e426..5c3b9f5 100644 --- a/res/info.txt +++ b/res/info.txt @@ -4,7 +4,7 @@ VSVersionInfo( ffi=FixedFileInfo( # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4) # Set not needed items to zero 0. - filevers=(3, 1, 2, 0), + filevers=(3, 1, 2, 1), prodvers=(0, 0, 0, 0), # Contains a bitmask that specifies the valid bits 'flags'r mask=0x3f, @@ -31,13 +31,13 @@ VSVersionInfo( [StringStruct('Comments', 'https://github.com/DLmaster361/AUTO_MAA/'), StringStruct('CompanyName', 'AUTO_MAA Team'), StringStruct('FileDescription', 'AUTO_MAA Component'), - StringStruct('FileVersion', '3.1.2'), + StringStruct('FileVersion', '3.1.2.1'), StringStruct('InternalName', 'AUTO_MAA'), StringStruct('LegalCopyright', 'Copyright © 2024 DLmaster361'), StringStruct('OriginalFilename', 'AUTO_MAA.py'), StringStruct('ProductName', 'AUTO_MAA'), - StringStruct('ProductVersion', 'v3.1.2'), - StringStruct('Assembly Version', 'v3.1.2')]) + StringStruct('ProductVersion', 'v3.1.2.1'), + StringStruct('Assembly Version', 'v3.1.2.1')]) ]) ] ) \ No newline at end of file diff --git a/更新说明.txt b/更新说明.txt index 58dbfee..f28dea4 100644 --- a/更新说明.txt +++ b/更新说明.txt @@ -1,9 +1,15 @@ -v3.1.2 +v3.1.2_Beta ## 修复BUG -- 更新MAA的配置方法,使之适配最新版本 +- 无 +## 程序优化 +- 优化log文件读取策略,可以读取无时间戳的日志 +- 优化MAA运行判定,为后续开发打基础 ## 更新说明 - 项目初始阶段,不会提供专门的版本更新程序,您需要手动更新程序。 - v2.1.5及以前的用户,由于新版本采用全新的架构,您需要手动输入之前的信息。 - v3.0_Beta版用户,直接用AUTO_MAA.exe替代gui.exe后,将原文件夹下的gui文件夹用新版本对应文件替换,重新设置每个用户的“自定义基建”选项(输入“-”以关闭该功能,输入自定义基建配置文件地址以开启该功能)。 -- v3.1~v3.1.1版用户,将原文件夹下的AUTO_MAA.exe文件和gui文件夹用新版本对应文件替换即可。 -- 新用户请忽略本说明。 \ No newline at end of file +- v3.1~v3.1.2版用户,将原文件夹下的AUTO_MAA.exe文件和gui文件夹用新版本对应文件替换即可。 +- 新用户请忽略本说明。 + + +```内测版,普通用户请忽略``` \ No newline at end of file