feat: 通用调度适配
This commit is contained in:
@@ -24,7 +24,7 @@ __author__ = "DLmaster361 <DLmaster_361@163.com>"
|
|||||||
__license__ = "GPL-3.0 license"
|
__license__ = "GPL-3.0 license"
|
||||||
|
|
||||||
from .broadcast import Broadcast
|
from .broadcast import Broadcast
|
||||||
from .config import Config, MaaConfig, GeneralConfig, MaaUserConfig
|
from .config import Config, MaaConfig, GeneralConfig, MaaUserConfig, GeneralUserConfig
|
||||||
from .timer import MainTimer
|
from .timer import MainTimer
|
||||||
from .task_manager import TaskManager
|
from .task_manager import TaskManager
|
||||||
|
|
||||||
@@ -36,4 +36,5 @@ __all__ = [
|
|||||||
"MainTimer",
|
"MainTimer",
|
||||||
"TaskManager",
|
"TaskManager",
|
||||||
"MaaUserConfig",
|
"MaaUserConfig",
|
||||||
|
"GeneralUserConfig",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import asyncio
|
|
||||||
import requests
|
import requests
|
||||||
import truststore
|
import truststore
|
||||||
import calendar
|
import calendar
|
||||||
@@ -133,7 +132,7 @@ class TimeSet(ConfigBase):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.Info_Enabled = ConfigItem("Info", "Enabled", False, BoolValidator())
|
self.Info_Enabled = ConfigItem("Info", "Enabled", False, BoolValidator())
|
||||||
self.Info_Time = ConfigItem("Info", "Set", "00:00")
|
self.Info_Time = ConfigItem("Info", "Time", "00:00")
|
||||||
|
|
||||||
|
|
||||||
class QueueConfig(ConfigBase):
|
class QueueConfig(ConfigBase):
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ class _TaskManager:
|
|||||||
|
|
||||||
if isinstance(Config.ScriptConfig[task_id], MaaConfig):
|
if isinstance(Config.ScriptConfig[task_id], MaaConfig):
|
||||||
task_item = MaaManager(mode, task_id, actual_id, websocket)
|
task_item = MaaManager(mode, task_id, actual_id, websocket)
|
||||||
# elif isinstance(Config.ScriptConfig[task_id], GeneralConfig):
|
elif isinstance(Config.ScriptConfig[task_id], GeneralConfig):
|
||||||
# task_item = GeneralManager(mode, task_id, actual_id, websocket)
|
task_item = GeneralManager(mode, task_id, actual_id, websocket)
|
||||||
else:
|
else:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"不支持的脚本类型:{Config.ScriptConfig[task_id].__class__.__name__}"
|
f"不支持的脚本类型:{Config.ScriptConfig[task_id].__class__.__name__}"
|
||||||
@@ -197,8 +197,8 @@ class _TaskManager:
|
|||||||
|
|
||||||
if isinstance(Config.ScriptConfig[script_id], MaaConfig):
|
if isinstance(Config.ScriptConfig[script_id], MaaConfig):
|
||||||
task_item = MaaManager(mode, script_id, None, websocket)
|
task_item = MaaManager(mode, script_id, None, websocket)
|
||||||
# elif isinstance(Config.ScriptConfig[task_id], GeneralConfig):
|
elif isinstance(Config.ScriptConfig[task_id], GeneralConfig):
|
||||||
# task_item = GeneralManager(mode, task_id, actual_id, websocket)
|
task_item = GeneralManager(mode, task_id, actual_id, websocket)
|
||||||
else:
|
else:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"不支持的脚本类型:{Config.ScriptConfig[script_id].__class__.__name__}"
|
f"不支持的脚本类型:{Config.ScriptConfig[script_id].__class__.__name__}"
|
||||||
|
|||||||
@@ -183,12 +183,9 @@ class MaaManager:
|
|||||||
|
|
||||||
self.cur_user_data = self.user_config[uuid.UUID(user["user_id"])]
|
self.cur_user_data = self.user_config[uuid.UUID(user["user_id"])]
|
||||||
|
|
||||||
if self.script_config.get(
|
if (self.script_config.get("Run", "ProxyTimesLimit") == 0) or (
|
||||||
"Run", "ProxyTimesLimit"
|
self.cur_user_data.get("Data", "ProxyTimes")
|
||||||
) == 0 or self.cur_user_data.get(
|
< self.script_config.get("Run", "ProxyTimesLimit")
|
||||||
"Data", "ProxyTimes"
|
|
||||||
) < self.script_config.get(
|
|
||||||
"Run", "ProxyTimesLimit"
|
|
||||||
):
|
):
|
||||||
user["status"] = "运行"
|
user["status"] = "运行"
|
||||||
await self.websocket.send_json(
|
await self.websocket.send_json(
|
||||||
@@ -848,6 +845,7 @@ class MaaManager:
|
|||||||
self.log_start_time = datetime.now()
|
self.log_start_time = datetime.now()
|
||||||
|
|
||||||
# 监测MAA运行状态
|
# 监测MAA运行状态
|
||||||
|
self.log_check_mode = "设置脚本"
|
||||||
await self.maa_log_monitor.start(self.maa_log_path, self.log_start_time)
|
await self.maa_log_monitor.start(self.maa_log_path, self.log_start_time)
|
||||||
self.wait_event.clear()
|
self.wait_event.clear()
|
||||||
await self.wait_event.wait()
|
await self.wait_event.wait()
|
||||||
@@ -893,7 +891,7 @@ class MaaManager:
|
|||||||
)
|
)
|
||||||
self.user_list[self.index]["status"] = "完成"
|
self.user_list[self.index]["status"] = "完成"
|
||||||
logger.success(
|
logger.success(
|
||||||
f"用户 {self.user_list[self.index]['name']} 的自动代理任务已完成"
|
f"用户 {self.user_list[self.index]['user_id']} 的自动代理任务已完成"
|
||||||
)
|
)
|
||||||
Notify.push_plyer(
|
Notify.push_plyer(
|
||||||
"成功完成一个自动代理任务!",
|
"成功完成一个自动代理任务!",
|
||||||
@@ -904,7 +902,7 @@ class MaaManager:
|
|||||||
else:
|
else:
|
||||||
# 录入代理失败的用户
|
# 录入代理失败的用户
|
||||||
logger.error(
|
logger.error(
|
||||||
f"用户 {self.user_list[self.index]['name']} 的自动代理任务未完成"
|
f"用户 {self.user_list[self.index]['user_id']} 的自动代理任务未完成"
|
||||||
)
|
)
|
||||||
self.user_list[self.index]["status"] = "异常"
|
self.user_list[self.index]["status"] = "异常"
|
||||||
|
|
||||||
@@ -930,6 +928,7 @@ class MaaManager:
|
|||||||
self.user_list[self.index]["status"] = "异常"
|
self.user_list[self.index]["status"] = "异常"
|
||||||
|
|
||||||
async def final_task(self, task: asyncio.Task):
|
async def final_task(self, task: asyncio.Task):
|
||||||
|
"""结束时的收尾工作"""
|
||||||
|
|
||||||
logger.info("MAA 主任务已结束,开始执行后续操作")
|
logger.info("MAA 主任务已结束,开始执行后续操作")
|
||||||
|
|
||||||
@@ -1005,7 +1004,7 @@ class MaaManager:
|
|||||||
title = (
|
title = (
|
||||||
f"{self.current_date} | {self.script_config.get("Info", "Name")}的{self.mode}任务报告"
|
f"{self.current_date} | {self.script_config.get("Info", "Name")}的{self.mode}任务报告"
|
||||||
if self.script_config.get("Info", "Name") != ""
|
if self.script_config.get("Info", "Name") != ""
|
||||||
else f"{self.current_date} | {self.mode[:4]}任务报告"
|
else f"{self.current_date} | {self.mode}任务报告"
|
||||||
)
|
)
|
||||||
result = {
|
result = {
|
||||||
"title": f"{self.mode}任务报告",
|
"title": f"{self.mode}任务报告",
|
||||||
@@ -1028,9 +1027,11 @@ class MaaManager:
|
|||||||
f"已完成数:{result["completed_count"]},未完成数:{result["uncompleted_count"]}\n\n"
|
f"已完成数:{result["completed_count"]},未完成数:{result["uncompleted_count"]}\n\n"
|
||||||
)
|
)
|
||||||
if len(result["failed_user"]) > 0:
|
if len(result["failed_user"]) > 0:
|
||||||
result_text += f"{self.mode[2:4]}未成功的用户:\n{"\n".join(result["failed_user"])}\n"
|
result_text += (
|
||||||
|
f"{self.mode}未成功的用户:\n{"\n".join(result["failed_user"])}\n"
|
||||||
|
)
|
||||||
if len(result["waiting_user"]) > 0:
|
if len(result["waiting_user"]) > 0:
|
||||||
result_text += f"\n未开始{self.mode[2:4]}的用户:\n{"\n".join(result["waiting_user"])}\n"
|
result_text += f"\n未开始{self.mode}的用户:\n{"\n".join(result["waiting_user"])}\n"
|
||||||
|
|
||||||
# 推送代理结果通知
|
# 推送代理结果通知
|
||||||
Notify.push_plyer(
|
Notify.push_plyer(
|
||||||
@@ -1040,6 +1041,7 @@ class MaaManager:
|
|||||||
10,
|
10,
|
||||||
)
|
)
|
||||||
await self.push_notification("代理结果", title, result)
|
await self.push_notification("代理结果", title, result)
|
||||||
|
|
||||||
elif self.mode == "设置脚本":
|
elif self.mode == "设置脚本":
|
||||||
(
|
(
|
||||||
Path.cwd()
|
Path.cwd()
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ __license__ = "GPL-3.0 license"
|
|||||||
|
|
||||||
|
|
||||||
from .skland import skland_sign_in
|
from .skland import skland_sign_in
|
||||||
|
from .general import GeneralManager
|
||||||
from .MAA import MaaManager
|
from .MAA import MaaManager
|
||||||
|
|
||||||
__all__ = ["skland_sign_in", "MaaManager"]
|
__all__ = ["skland_sign_in", "GeneralManager", "MaaManager"]
|
||||||
|
|||||||
1071
app/task/general.py
Normal file
1071
app/task/general.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,33 @@ from .logger import get_logger
|
|||||||
|
|
||||||
logger = get_logger("日志监控器")
|
logger = get_logger("日志监控器")
|
||||||
|
|
||||||
|
TIME_FIELDS = {
|
||||||
|
"%Y": "year",
|
||||||
|
"%m": "month",
|
||||||
|
"%d": "day",
|
||||||
|
"%H": "hour",
|
||||||
|
"%M": "minute",
|
||||||
|
"%S": "second",
|
||||||
|
"%f": "microsecond",
|
||||||
|
}
|
||||||
|
"""时间字段映射表"""
|
||||||
|
|
||||||
|
|
||||||
|
def strptime(date_string: str, format: str, default_date: datetime) -> datetime:
|
||||||
|
"""根据指定格式解析日期字符串"""
|
||||||
|
|
||||||
|
date = datetime.strptime(date_string, format)
|
||||||
|
|
||||||
|
# 构建参数字典
|
||||||
|
datetime_kwargs = {}
|
||||||
|
for format_code, field_name in TIME_FIELDS.items():
|
||||||
|
if format_code in format:
|
||||||
|
datetime_kwargs[field_name] = getattr(date, field_name)
|
||||||
|
else:
|
||||||
|
datetime_kwargs[field_name] = getattr(default_date, field_name)
|
||||||
|
|
||||||
|
return datetime(**datetime_kwargs)
|
||||||
|
|
||||||
|
|
||||||
class LogMonitor:
|
class LogMonitor:
|
||||||
def __init__(
|
def __init__(
|
||||||
@@ -54,13 +81,14 @@ class LogMonitor:
|
|||||||
async for line in f:
|
async for line in f:
|
||||||
if not if_log_start:
|
if not if_log_start:
|
||||||
try:
|
try:
|
||||||
entry_time = datetime.strptime(
|
entry_time = strptime(
|
||||||
line[
|
line[
|
||||||
self.time_stamp_range[
|
self.time_stamp_range[
|
||||||
0
|
0
|
||||||
] : self.time_stamp_range[1]
|
] : self.time_stamp_range[1]
|
||||||
],
|
],
|
||||||
self.time_format,
|
self.time_format,
|
||||||
|
self.last_callback_time,
|
||||||
)
|
)
|
||||||
if entry_time > self.log_start_time:
|
if entry_time > self.log_start_time:
|
||||||
if_log_start = True
|
if_log_start = True
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ __license__ = "GPL-3.0 license"
|
|||||||
|
|
||||||
from .logger import get_logger
|
from .logger import get_logger
|
||||||
from .ImageUtils import ImageUtils
|
from .ImageUtils import ImageUtils
|
||||||
from .LogMonitor import LogMonitor
|
from .LogMonitor import LogMonitor, strptime
|
||||||
from .ProcessManager import ProcessManager
|
from .ProcessManager import ProcessManager
|
||||||
from .security import dpapi_encrypt, dpapi_decrypt
|
from .security import dpapi_encrypt, dpapi_decrypt
|
||||||
|
|
||||||
@@ -37,4 +37,5 @@ __all__ = [
|
|||||||
"ProcessManager",
|
"ProcessManager",
|
||||||
"dpapi_encrypt",
|
"dpapi_encrypt",
|
||||||
"dpapi_decrypt",
|
"dpapi_decrypt",
|
||||||
|
"strptime",
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user