From c3c07804cd9b92c76342381d0c04e3271b27c97f Mon Sep 17 00:00:00 2001 From: DLmaster Date: Sun, 2 Feb 2025 01:19:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(core):=20=E4=BF=AE=E5=A4=8D=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=9F=BA=E5=BB=BA=E6=97=A0=E6=B3=95=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E4=BD=BF=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98=20feat(c?= =?UTF-8?q?ore):=20=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E6=AF=8F=E6=97=A5?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=AC=A1=E6=95=B0=E4=B8=8A=E9=99=90=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++------ app/core/config.py | 30 ++++++++++++++++++++++++++++++ app/models/MAA.py | 17 ++++++++++++++--- app/ui/member_manager.py | 23 ++++++++++++++--------- resources/version.json | 4 ++-- 5 files changed, 62 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 4ec31b0..2c5c299 100644 --- a/README.md +++ b/README.md @@ -189,13 +189,9 @@ MAA多账号管理与自动化软件 # 关于 -## 未来开发方向 +## 项目开发情况 -- [ ] 尝试接入更多开源社区成果 -- [ ] 支持对MAA运行状况的进一步识别 -- [x] 添加更多通知手段 -- [x] GUI界面美化 -- [ ] 软件相关web功能开发 +可在[《AUTO_MAA开发者协作文档》](https://docs.qq.com/aio/DQ3Z5eHNxdmxFQmZX)的`开发任务`页面中查看开发进度。 ## 贡献者 diff --git a/app/core/config.py b/app/core/config.py index 9998047..167927b 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -39,6 +39,7 @@ from qfluentwidgets import ( FolderValidator, BoolValidator, RangeValidator, + qconfig, ) @@ -125,6 +126,15 @@ class AppConfig: self.queue_config = QueueConfig() self.maa_config = MaaConfig() + config_list = self.search_config() + for config in config_list: + if config[0] == "Maa": + qconfig.load(config[1], self.maa_config) + self.maa_config.save() + elif config[0] == "Queue": + qconfig.load(config[1], self.queue_config) + self.queue_config.save() + logger.info("配置类初始化完成") def init_database(self, mode: str) -> None: @@ -378,6 +388,22 @@ class AppConfig: db.close() logger.info("数据文件版本更新完成") + def search_config(self) -> list: + """搜索所有子配置文件""" + + config_list = [] + + if (self.app_path / "config/MaaConfig").exists(): + for subdir in (self.app_path / "config/MaaConfig").iterdir(): + if subdir.is_dir(): + config_list.append(["Maa", subdir / "config.json"]) + + if (self.app_path / "config/QueueConfig").exists(): + for json_file in (self.app_path / "config/QueueConfig").glob("*.json"): + config_list.append(["Queue", json_file]) + + return config_list + def open_database(self, mode: str, index: str = None) -> None: """打开数据库""" @@ -459,6 +485,7 @@ class AppConfig: self.maa_config.set(self.maa_config.MaaSet_Name, "") self.maa_config.set(self.maa_config.MaaSet_Path, ".") + self.maa_config.set(self.maa_config.RunSet_ProxyTimesLimit, 0) self.maa_config.set(self.maa_config.RunSet_AnnihilationTimeLimit, 40) self.maa_config.set(self.maa_config.RunSet_RoutineTimeLimit, 10) self.maa_config.set(self.maa_config.RunSet_RunTimesLimit, 3) @@ -587,6 +614,9 @@ class MaaConfig(QConfig): MaaSet_Name = ConfigItem("MaaSet", "Name", "") MaaSet_Path = ConfigItem("MaaSet", "Path", ".", FolderValidator()) + RunSet_ProxyTimesLimit = RangeConfigItem( + "RunSet", "ProxyTimesLimit", 0, RangeValidator(0, 1024) + ) RunSet_AnnihilationTimeLimit = RangeConfigItem( "RunSet", "AnnihilationTimeLimit", 40, RangeValidator(1, 1024) ) diff --git a/app/models/MAA.py b/app/models/MAA.py index 939497d..ca17242 100644 --- a/app/models/MAA.py +++ b/app/models/MAA.py @@ -137,8 +137,16 @@ class MaaManager(QObject): if self.isInterruptionRequested: break - user[1] = "运行" - self.update_user_list.emit(user_list) + if ( + self.set["RunSet"]["ProxyTimesLimit"] == 0 + or self.data[user[2]][14] < self.set["RunSet"]["ProxyTimesLimit"] + ): + user[1] = "运行" + self.update_user_list.emit(user_list) + else: + user[1] = "跳过" + self.update_user_list.emit(user_list) + continue # 初始化代理情况记录和模式替换记录 run_book = [False for _ in range(2)] @@ -851,7 +859,10 @@ class MaaManager(QObject): ] = "False" # 自定义基建配置文件只读 data["Configurations"]["Default"][ "Infrast.CustomInfrastFile" - ] = f"{self.config_path}/simple/{self.data[index][16]}/infrastructure/infrastructure.json" # 自定义基建配置文件地址 + ] = str( + self.config_path + / f"simple/{self.data[index][16]}/infrastructure/infrastructure.json" + ) # 自定义基建配置文件地址 # 人工排查配置 elif "人工排查" in mode: diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 2bfebea..5a45589 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -578,6 +578,14 @@ class MaaSettingBox(QWidget): widget = QWidget() Layout = QVBoxLayout(widget) + self.ProxyTimesLimit = SpinBoxSettingCard( + (0, 1024), + FluentIcon.PAGE_RIGHT, + "用户单日代理次数上限", + "当用户本日代理成功次数超过该阈值时跳过代理,阈值为“0”时视为无代理次数上限", + Config.maa_config.RunSet_ProxyTimesLimit, + ) + self.AnnihilationTimeLimit = SpinBoxSettingCard( (1, 1024), FluentIcon.PAGE_RIGHT, @@ -602,6 +610,7 @@ class MaaSettingBox(QWidget): Config.maa_config.RunSet_RunTimesLimit, ) + Layout.addWidget(self.ProxyTimesLimit) Layout.addWidget(self.AnnihilationTimeLimit) Layout.addWidget(self.RoutineTimeLimit) Layout.addWidget(self.RunTimesLimit) @@ -707,7 +716,7 @@ class MaaSettingBox(QWidget): shutil.copy( file_path, Config.app_path - / f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure", + / f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure/infrastructure.json", ) else: logger.warning("未选择自定义基建文件") @@ -963,11 +972,9 @@ class MaaSettingBox(QWidget): elif j == 5: curdate = server_date() if curdate != value: - item = QTableWidgetItem("今日未代理") + item = QTableWidgetItem("未代理") else: - item = QTableWidgetItem( - f"今日已代理{data_simple[i][14]}次" - ) + item = QTableWidgetItem(f"已代理{data_simple[i][14]}次") item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) elif j == 12: if Config.PASSWORD == "": @@ -1032,11 +1039,9 @@ class MaaSettingBox(QWidget): elif j == 5: curdate = server_date() if curdate != value: - item = QTableWidgetItem("今日未代理") + item = QTableWidgetItem("未代理") else: - item = QTableWidgetItem( - f"今日已代理{data_beta[i][14]}次" - ) + item = QTableWidgetItem(f"已代理{data_beta[i][14]}次") item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) elif j == 12: if Config.PASSWORD == "": diff --git a/resources/version.json b/resources/version.json index 80790b1..cf63ea1 100644 --- a/resources/version.json +++ b/resources/version.json @@ -1,7 +1,7 @@ { - "main_version": "4.2.2.0", + "main_version": "4.2.2.1", "updater_version": "1.1.1.0", - "announcement": "\n## 新增功能\n- 调度队列上线,支持MAA多开 #12\n- 公告系统上线\n## 修复BUG\n- 修复手机号码不全时引发的混乱\n- 添加了一堆BUG(确信)\n## 程序优化\n- 界面重构,引入`QFluentWidgets`美化界面", + "announcement": "\n## 新增功能\n- 添加用户每日代理次数上限功能 #15\n## 修复BUG\n- 修复自定义基建无法正常使用的问题\n- 修正人工排查文案\n## 程序优化\n- 无", "proxy_list": [ "", "https://gitproxy.click/",