调度队列逻辑修复

This commit is contained in:
DLmaster
2025-01-06 16:23:45 +08:00
parent 684211c129
commit e79417ec5e
7 changed files with 150 additions and 104 deletions

View File

@@ -70,9 +70,9 @@ class AppConfig:
# 检查目录
(self.app_path / "config").mkdir(parents=True, exist_ok=True)
(self.app_path / "data/MAAconfig/simple").mkdir(parents=True, exist_ok=True)
(self.app_path / "data/MAAconfig/beta").mkdir(parents=True, exist_ok=True)
(self.app_path / "data/MAAconfig/Default").mkdir(parents=True, exist_ok=True)
# (self.app_path / "data/MAAconfig/simple").mkdir(parents=True, exist_ok=True)
# (self.app_path / "data/MAAconfig/beta").mkdir(parents=True, exist_ok=True)
# (self.app_path / "data/MAAconfig/Default").mkdir(parents=True, exist_ok=True)
# 生成版本信息文件
if not self.version_path.exists():
@@ -90,11 +90,11 @@ class AppConfig:
encoding="utf-8",
)
self.get_config()
self.init_config()
# self.check_database()
def get_config(self) -> None:
"""创建配置类"""
def init_config(self) -> None:
"""初始化配置类"""
self.global_config = GlobalConfig()
qconfig.load(self.config_path, self.global_config)
@@ -102,6 +102,17 @@ class AppConfig:
self.queue_config = QueueConfig()
self.maa_config = MaaConfig()
def init_database(self, mode: str) -> None:
"""初始化用户数据库"""
if mode == "Maa":
self.cur.execute(
"CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int)"
)
self.cur.execute("CREATE TABLE version(v text)")
self.cur.execute("INSERT INTO version VALUES(?)", ("v1.3",))
self.db.commit()
def check_database(self) -> None:
"""检查用户数据库文件并处理数据库版本更新"""
@@ -181,17 +192,6 @@ class AppConfig:
cur.close()
db.close()
def init_database(self, mode: str) -> None:
"""初始化用户数据库"""
if mode == "Maa":
self.cur.execute(
"CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int)"
)
self.cur.execute("CREATE TABLE version(v text)")
self.cur.execute("INSERT INTO version VALUES(?)", ("v1.3",))
self.db.commit()
def open_database(self, mode: str, index: str = None) -> None:
"""打开数据库"""
@@ -212,6 +212,56 @@ class AppConfig:
self.db.close()
self.if_database_opened = False
def clear_maa_config(self) -> None:
"""清空MAA配置"""
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_AnnihilationTimeLimit, 40)
self.maa_config.set(self.maa_config.RunSet_RoutineTimeLimit, 10)
self.maa_config.set(self.maa_config.RunSet_RunTimesLimit, 3)
self.maa_config.set(self.maa_config.MaaSet_Name, "")
self.maa_config.set(self.maa_config.MaaSet_Name, "")
self.maa_config.set(self.maa_config.MaaSet_Name, "")
def clear_queue_config(self) -> None:
"""清空队列配置"""
self.queue_config.set(self.queue_config.queueSet_Name, "")
self.queue_config.set(self.queue_config.queueSet_Enabled, False)
self.queue_config.set(self.queue_config.time_TimeEnabled_0, False)
self.queue_config.set(self.queue_config.time_TimeSet_0, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_1, False)
self.queue_config.set(self.queue_config.time_TimeSet_1, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_2, False)
self.queue_config.set(self.queue_config.time_TimeSet_2, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_3, False)
self.queue_config.set(self.queue_config.time_TimeSet_3, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_4, False)
self.queue_config.set(self.queue_config.time_TimeSet_4, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_5, False)
self.queue_config.set(self.queue_config.time_TimeSet_5, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_6, False)
self.queue_config.set(self.queue_config.time_TimeSet_6, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_7, False)
self.queue_config.set(self.queue_config.time_TimeSet_7, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_8, False)
self.queue_config.set(self.queue_config.time_TimeSet_8, "00:00")
self.queue_config.set(self.queue_config.time_TimeEnabled_9, False)
self.queue_config.set(self.queue_config.time_TimeSet_9, "00:00")
self.queue_config.set(self.queue_config.queue_Member_1, "禁用")
self.queue_config.set(self.queue_config.queue_Member_2, "禁用")
self.queue_config.set(self.queue_config.queue_Member_3, "禁用")
self.queue_config.set(self.queue_config.queue_Member_4, "禁用")
self.queue_config.set(self.queue_config.queue_Member_5, "禁用")
self.queue_config.set(self.queue_config.queue_Member_6, "禁用")
self.queue_config.set(self.queue_config.queue_Member_7, "禁用")
self.queue_config.set(self.queue_config.queue_Member_8, "禁用")
self.queue_config.set(self.queue_config.queue_Member_9, "禁用")
self.queue_config.set(self.queue_config.queue_Member_10, "禁用")
class GlobalConfig(QConfig):
"""全局配置"""

View File

@@ -149,6 +149,9 @@ class AUTO_MAA(MSFluentWindow):
FluentIcon.BOOK_SHELF,
NavigationItemPosition.TOP,
)
self.stackedWidget.currentChanged.connect(
lambda index: self.queue_manager.refresh() if index == 2 else None
)
# 创建系统托盘及其菜单
self.tray = QSystemTrayIcon(

View File

@@ -76,7 +76,7 @@ from typing import List, Tuple
from pathlib import Path
import os
import datetime
import ctypes
import json
import subprocess
import shutil
import win32gui
@@ -183,21 +183,7 @@ class MemberManager(QWidget):
self.config.app_path / f"config/MaaConfig/脚本_{index}/config.json",
self.config.maa_config,
)
self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "")
self.config.maa_config.set(self.config.maa_config.MaaSet_Path, ".")
self.config.maa_config.set(
self.config.maa_config.RunSet_AnnihilationTimeLimit, 40
)
self.config.maa_config.set(
self.config.maa_config.RunSet_RoutineTimeLimit, 10
)
self.config.maa_config.set(
self.config.maa_config.RunSet_RunTimesLimit, 3
)
self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "")
self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "")
self.config.maa_config.set(self.config.maa_config.MaaSet_Name, "")
self.config.clear_maa_config()
self.config.maa_config.save()
self.config.open_database("Maa", f"脚本_{index}")
@@ -229,6 +215,7 @@ class MemberManager(QWidget):
self.member_manager.clear_SettingBox()
shutil.rmtree(self.config.app_path / f"config/{type[0]}Config/{name}")
self.change_queue(name, "禁用")
for member in move_list:
if (
self.config.app_path / f"config/{member[1]}Config/{member[0]}"
@@ -237,8 +224,9 @@ class MemberManager(QWidget):
self.config.app_path / f"config/{member[1]}Config/{member[0]}"
).rename(
self.config.app_path
/ f"config/{member[1]}Config/{member[0][:3]}{int(member[0][3:])-1}",
/ f"config/{member[1]}Config/脚本_{int(member[0][3:])-1}",
)
self.change_queue(member[0], f"脚本_{int(member[0][3:])-1}")
self.member_manager.show_SettingBox(index)
@@ -262,15 +250,17 @@ class MemberManager(QWidget):
self.member_manager.clear_SettingBox()
(self.config.app_path / f"config/{type_right[0]}Config/脚本_{index}").rename(
self.config.app_path / f"config/{type_right[0]}Config/脚本_0",
self.config.app_path / f"config/{type_right[0]}Config/脚本_0"
)
shutil.move(
str(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index-1}"),
str(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}"),
self.change_queue(f"脚本_{index}", "脚本_0")
(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index-1}").rename(
self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}"
)
self.change_queue(f"脚本_{index-1}", f"脚本_{index}")
(self.config.app_path / f"config/{type_right[0]}Config/脚本_0").rename(
self.config.app_path / f"config/{type_right[0]}Config/脚本_{index-1}",
self.config.app_path / f"config/{type_right[0]}Config/脚本_{index-1}"
)
self.change_queue("脚本_0", f"脚本_{index-1}")
self.member_manager.show_SettingBox(index - 1)
@@ -296,12 +286,15 @@ class MemberManager(QWidget):
(self.config.app_path / f"config/{type_left[0]}Config/脚本_{index}").rename(
self.config.app_path / f"config/{type_left[0]}Config/脚本_0",
)
self.change_queue(f"脚本_{index}", "脚本_0")
(self.config.app_path / f"config/{type_right[0]}Config/脚本_{index+1}").rename(
self.config.app_path / f"config/{type_right[0]}Config/脚本_{index}",
)
self.change_queue(f"脚本_{index+1}", f"脚本_{index}")
(self.config.app_path / f"config/{type_left[0]}Config/脚本_0").rename(
self.config.app_path / f"config/{type_left[0]}Config/脚本_{index+1}",
)
self.change_queue("脚本_0", f"脚本_{index+1}")
self.member_manager.show_SettingBox(index + 1)
@@ -336,6 +329,23 @@ class MemberManager(QWidget):
self.key.setIcon(FluentIcon.HIDE)
self.key.setChecked(False)
def change_queue(self, old: str, new: str) -> None:
"""修改调度队列配置文件的队列参数"""
if (self.config.app_path / "config/QueueConfig").exists():
for json_file in (self.config.app_path / "config/QueueConfig").glob(
"*.json"
):
with json_file.open("r", encoding="utf-8") as f:
data = json.load(f)
for i in range(10):
if data["Queue"][f"Member_{i+1}"] == old:
data["Queue"][f"Member_{i+1}"] = new
with json_file.open("w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
class MemberSettingBox(QWidget):
@@ -367,10 +377,17 @@ class MemberSettingBox(QWidget):
member_list = self.search_member()
qconfig.load(
self.config.app_path / "config/临时.json",
self.config.maa_config,
)
self.config.clear_maa_config()
for member in member_list:
if member[1] == "Maa":
self.config.open_database(member[1], member[0])
self.add_MaaSettingBox(int(member[0][3:]))
if (self.config.app_path / "config/临时.json").exists():
(self.config.app_path / "config/临时.json").unlink()
self.switch_SettingBox(index)
@@ -404,6 +421,13 @@ class MemberSettingBox(QWidget):
sub_interface.deleteLater()
self.script_list.clear()
self.pivot.clear()
qconfig.load(
self.config.app_path / "config/临时.json",
self.config.maa_config,
)
self.config.clear_maa_config()
if (self.config.app_path / "config/临时.json").exists():
(self.config.app_path / "config/临时.json").unlink()
self.config.close_database()
def add_MaaSettingBox(self, uid: int) -> None:
@@ -475,7 +499,7 @@ class MaaSettingBox(QWidget):
Layout = QVBoxLayout()
self.card_Name = LineEditSettingCard(
"实例名称",
"请输入实例名称",
FluentIcon.EDIT,
"实例名称",
"用于标识MAA实例的名称",

View File

@@ -147,8 +147,6 @@ class QueueManager(QWidget):
),
]
)
self.tools.addSeparator()
self.tools.addAction(Action(FluentIcon.ROTATE, "刷新", triggered=self.refresh))
layout.addWidget(self.tools)
layout.addWidget(self.queue_manager)
@@ -162,42 +160,7 @@ class QueueManager(QWidget):
self.config.app_path / f"config/QueueConfig/调度队列_{index}.json",
self.config.queue_config,
)
self.config.queue_config.set(self.config.queue_config.queueSet_Name, "")
self.config.queue_config.set(self.config.queue_config.queueSet_Enabled, False)
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_0, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_0, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_1, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_1, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_2, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_2, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_3, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_3, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_4, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_4, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_5, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_5, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_6, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_6, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_7, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_7, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_8, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_8, "00:00")
self.config.queue_config.set(self.config.queue_config.time_TimeEnabled_9, False)
self.config.queue_config.set(self.config.queue_config.time_TimeSet_9, "00:00")
self.config.queue_config.set(self.config.queue_config.queue_Member_1, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_2, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_3, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_4, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_5, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_6, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_7, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_8, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_9, "禁用")
self.config.queue_config.set(self.config.queue_config.queue_Member_10, "禁用")
self.config.clear_queue_config()
self.config.queue_config.save()
self.queue_manager.add_QueueSettingBox(index)
@@ -225,7 +188,7 @@ class QueueManager(QWidget):
self.queue_manager.clear_SettingBox()
os.remove(self.config.app_path / f"config/QueueConfig/{name}.json")
(self.config.app_path / f"config/QueueConfig/{name}.json").unlink()
for queue in move_list:
if (
self.config.app_path / f"config/QueueConfig/{queue[0]}.json"
@@ -332,8 +295,15 @@ class QueueSettingBox(QWidget):
queue_list = self.search_queue()
qconfig.load(
self.config.app_path / "config/临时.json",
self.config.queue_config,
)
self.config.clear_queue_config()
for queue in queue_list:
self.add_QueueSettingBox(int(queue[0][5:]))
if (self.config.app_path / "config/临时.json").exists():
(self.config.app_path / "config/临时.json").unlink()
self.switch_SettingBox(index)
@@ -363,6 +333,13 @@ class QueueSettingBox(QWidget):
sub_interface.deleteLater()
self.script_list.clear()
self.pivot.clear()
qconfig.load(
self.config.app_path / "config/临时.json",
self.config.queue_config,
)
self.config.clear_queue_config()
if (self.config.app_path / "config/临时.json").exists():
(self.config.app_path / "config/临时.json").unlink()
def add_QueueSettingBox(self, uid: int) -> None:
"""添加一个调度队列设置界面"""
@@ -435,7 +412,7 @@ class QueueMemberSettingBox(QWidget):
Layout = QVBoxLayout()
self.card_Name = LineEditSettingCard(
"调度队列名称",
"请输入调度队列名称",
FluentIcon.EDIT,
"调度队列名称",
"用于标识调度队列的名称",
@@ -566,7 +543,7 @@ class QueueMemberSettingBox(QWidget):
Layout = QVBoxLayout()
self.card_Name = LineEditSettingCard(
"调度队列名称",
"请输入调度队列名称",
FluentIcon.EDIT,
"调度队列名称",
"用于标识调度队列的名称",
@@ -589,7 +566,7 @@ class QueueMemberSettingBox(QWidget):
def __init__(self, parent=None, config: AppConfig = None):
super().__init__(parent)
self.setTitle("定时设置")
self.setTitle("任务队列")
self.config = config
self.queue_config = config.queue_config
@@ -601,7 +578,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_1 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_1,
FluentIcon.APPLICATION,
"任务实例1",
"任务实例 1",
"第一个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -609,7 +586,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_2 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_2,
FluentIcon.APPLICATION,
"任务实例2",
"任务实例 2",
"第二个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -617,7 +594,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_3 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_3,
FluentIcon.APPLICATION,
"任务实例3",
"任务实例 3",
"第三个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -625,7 +602,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_4 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_4,
FluentIcon.APPLICATION,
"任务实例4",
"任务实例 4",
"第四个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -633,7 +610,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_5 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_5,
FluentIcon.APPLICATION,
"任务实例5",
"任务实例 5",
"第五个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -641,7 +618,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_6 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_6,
FluentIcon.APPLICATION,
"任务实例6",
"任务实例 6",
"第六个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -649,7 +626,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_7 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_7,
FluentIcon.APPLICATION,
"任务实例7",
"任务实例 7",
"第七个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -657,7 +634,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_8 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_8,
FluentIcon.APPLICATION,
"任务实例8",
"任务实例 8",
"第八个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -665,7 +642,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_9 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_9,
FluentIcon.APPLICATION,
"任务实例9",
"任务实例 9",
"第九个调起的脚本任务实例",
member_list[0],
member_list[1],
@@ -673,7 +650,7 @@ class QueueMemberSettingBox(QWidget):
self.card_Member_10 = NoOptionComboBoxSettingCard(
self.queue_config.queue_Member_10,
FluentIcon.APPLICATION,
"任务实例10",
"任务实例 10",
"第十个调起的脚本任务实例",
member_list[0],
member_list[1],

View File

@@ -77,13 +77,7 @@ import json
import datetime
import ctypes
import subprocess
import shutil
import win32gui
import win32process
import psutil
import pyautogui
import time
import winreg
import requests
uiLoader = QUiLoader()

View File

@@ -67,10 +67,8 @@ class UpdateProcess(QThread):
def run(self) -> None:
# 清理可能存在的临时文件
try:
os.remove(self.download_path)
except FileNotFoundError:
pass
if self.download_path.exists():
self.download_path.unlink()
self.info.emit("正在获取下载链接")
url_list = self.get_download_url()
@@ -158,7 +156,7 @@ class UpdateProcess(QThread):
self.info.emit("正在删除临时文件")
self.progress.emit(0, 0, 0)
os.remove(self.download_path)
self.download_path.unlink()
self.info.emit(f"{self.name}更新成功!")
self.progress.emit(0, 100, 100)

View File

@@ -99,7 +99,7 @@ if __name__ == "__main__":
print(result.stderr)
print("AUTO_MAA update program packaging completed !")
os.remove(root_path / "Updater.py")
(root_path / "Updater.py").unlink()
(root_path / "version_info.txt").write_text(
f"{version_text(main_version_numb)}\n{version_text(updater_version_numb)}{version["announcement"]}",