调度器使用示例、OCR调用改进
This commit is contained in:
parent
f19b7a4968
commit
1bcc311a93
15 changed files with 154 additions and 45 deletions
|
@ -7,7 +7,7 @@ from mower.solvers.base_schedule import BaseSchedulerSolver
|
||||||
from mower.solvers.depot_reader import DepotManager
|
from mower.solvers.depot_reader import DepotManager
|
||||||
from mower.solvers.reclamation_algorithm import ReclamationAlgorithm
|
from mower.solvers.reclamation_algorithm import ReclamationAlgorithm
|
||||||
from mower.solvers.secret_front import SecretFront
|
from mower.solvers.secret_front import SecretFront
|
||||||
from mower.utils import config, path, rapidocr
|
from mower.utils import config, path
|
||||||
from mower.utils.csleep import MowerExit
|
from mower.utils.csleep import MowerExit
|
||||||
from mower.utils.datetime import format_time
|
from mower.utils.datetime import format_time
|
||||||
from mower.utils.device.adb_client.session import Session
|
from mower.utils.device.adb_client.session import Session
|
||||||
|
@ -26,7 +26,6 @@ operators = config.operators
|
||||||
# 执行自动排班
|
# 执行自动排班
|
||||||
def main():
|
def main():
|
||||||
logger.info("开始运行Mower")
|
logger.info("开始运行Mower")
|
||||||
rapidocr.initialize_ocr()
|
|
||||||
simulate()
|
simulate()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ from mower.solvers.depotREC import depotREC as DepotSolver
|
||||||
from mower.solvers.fight.credit_fight import CreditFight
|
from mower.solvers.fight.credit_fight import CreditFight
|
||||||
from mower.solvers.infra.base_choose import RIIC_ChooseSolver
|
from mower.solvers.infra.base_choose import RIIC_ChooseSolver
|
||||||
from mower.solvers.infra.base_mixin import BaseMixin
|
from mower.solvers.infra.base_mixin import BaseMixin
|
||||||
from mower.solvers.infra.clue import ClueSolver
|
from mower.solvers.infra.clue import ClueManager
|
||||||
from mower.solvers.infra.drone import DroneSolver
|
from mower.solvers.infra.drone import DroneSolver
|
||||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||||
from mower.solvers.infra.get_agent_from_room import GetAgentFromRoomSolver
|
from mower.solvers.infra.get_agent_from_room import GetAgentFromRoomSolver
|
||||||
|
@ -1691,7 +1691,9 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
||||||
self.todo_task = True
|
self.todo_task = True
|
||||||
|
|
||||||
def clue_new(self):
|
def clue_new(self):
|
||||||
self.party_time = ClueSolver().run()
|
clue_solver = ClueManager()
|
||||||
|
clue_solver.run()
|
||||||
|
self.party_time = clue_solver.party_time
|
||||||
if self.party_time:
|
if self.party_time:
|
||||||
if not find_next_task(
|
if not find_next_task(
|
||||||
self.tasks,
|
self.tasks,
|
||||||
|
@ -2679,7 +2681,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
||||||
|
|
||||||
def skland_plan_solover(self):
|
def skland_plan_solover(self):
|
||||||
try:
|
try:
|
||||||
return SKLand().start()
|
return SKLand().run()
|
||||||
except MowerExit:
|
except MowerExit:
|
||||||
raise
|
raise
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -36,7 +36,7 @@ class CreditFight(SceneGraphSolver):
|
||||||
{"type": "SkillDaemon"},
|
{"type": "SkillDaemon"},
|
||||||
]
|
]
|
||||||
self.auto_choose = auto_choose
|
self.auto_choose = auto_choose
|
||||||
super().run()
|
return super().run()
|
||||||
|
|
||||||
def choose_support(self):
|
def choose_support(self):
|
||||||
img = cropimg(config.recog.gray, ((0, 908), (1839, 983)))
|
img = cropimg(config.recog.gray, ((0, 908), (1839, 983)))
|
||||||
|
|
|
@ -7,11 +7,12 @@ import numpy as np
|
||||||
|
|
||||||
from mower import __rootdir__
|
from mower import __rootdir__
|
||||||
from mower.solvers.infra.filter import RIIC_Filter
|
from mower.solvers.infra.filter import RIIC_Filter
|
||||||
from mower.utils import config, rapidocr
|
from mower.utils import config
|
||||||
from mower.utils.character_recognize import operator_room_select
|
from mower.utils.character_recognize import operator_room_select
|
||||||
from mower.utils.csleep import MowerExit
|
from mower.utils.csleep import MowerExit
|
||||||
from mower.utils.image import cropimg, loadres, thres2
|
from mower.utils.image import cropimg, loadres, thres2
|
||||||
from mower.utils.log import logger
|
from mower.utils.log import logger
|
||||||
|
from mower.utils.rapidocr import engine
|
||||||
|
|
||||||
with lzma.open(f"{__rootdir__}/models/operator_room.model", "rb") as f:
|
with lzma.open(f"{__rootdir__}/models/operator_room.model", "rb") as f:
|
||||||
OP_ROOM = pickle.loads(f.read())
|
OP_ROOM = pickle.loads(f.read())
|
||||||
|
@ -145,7 +146,7 @@ class BaseMixin:
|
||||||
img = cropimg(img, ((169, 22), (513, 80)))
|
img = cropimg(img, ((169, 22), (513, 80)))
|
||||||
return self.read_operator_in_room(img)
|
return self.read_operator_in_room(img)
|
||||||
try:
|
try:
|
||||||
ret = rapidocr.engine(img, use_det=False, use_cls=False, use_rec=True)[0]
|
ret = engine(img, use_det=False, use_cls=False, use_rec=True)[0]
|
||||||
logger.debug(ret)
|
logger.debug(ret)
|
||||||
if not ret or not ret[0][0]:
|
if not ret or not ret[0][0]:
|
||||||
raise Exception("识别失败")
|
raise Exception("识别失败")
|
||||||
|
|
|
@ -9,7 +9,9 @@ from .place import PlaceSolver
|
||||||
from .receive import ReceiveSolver
|
from .receive import ReceiveSolver
|
||||||
|
|
||||||
|
|
||||||
class ClueSolver:
|
class ClueManager:
|
||||||
|
solver_name = "线索交流"
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
logger.info("基建:线索")
|
logger.info("基建:线索")
|
||||||
DailySolver().run()
|
DailySolver().run()
|
||||||
|
@ -17,6 +19,6 @@ class ClueSolver:
|
||||||
PlaceSolver().run()
|
PlaceSolver().run()
|
||||||
clue_count = GetClueCountSolver().run()
|
clue_count = GetClueCountSolver().run()
|
||||||
GiveAwaySolver().run(clue_count)
|
GiveAwaySolver().run(clue_count)
|
||||||
party_time = PartyTimeSolver().run()
|
self.party_time = PartyTimeSolver().run()
|
||||||
CreditShop().run()
|
CreditShop().run()
|
||||||
return party_time
|
return True
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||||
from mower.utils import config, rapidocr
|
from mower.utils import config
|
||||||
from mower.utils.graph import SceneGraphSolver
|
from mower.utils.graph import SceneGraphSolver
|
||||||
from mower.utils.image import cropimg
|
from mower.utils.image import cropimg
|
||||||
from mower.utils.log import logger
|
from mower.utils.log import logger
|
||||||
|
from mower.utils.rapidocr import engine
|
||||||
from mower.utils.recognize import Scene
|
from mower.utils.recognize import Scene
|
||||||
from mower.utils.vector import va
|
from mower.utils.vector import va
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ class GiveAwaySolver(SceneGraphSolver):
|
||||||
break
|
break
|
||||||
name_top_left = (870, 127 + 222 * i)
|
name_top_left = (870, 127 + 222 * i)
|
||||||
name_scope = (name_top_left, va(name_top_left, (383, 62)))
|
name_scope = (name_top_left, va(name_top_left, (383, 62)))
|
||||||
name = rapidocr.engine(
|
name = engine(
|
||||||
cropimg(config.recog.gray, name_scope),
|
cropimg(config.recog.gray, name_scope),
|
||||||
use_det=True,
|
use_det=True,
|
||||||
use_cls=False,
|
use_cls=False,
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import cv2
|
import cv2
|
||||||
|
|
||||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||||
from mower.utils import config, rapidocr
|
from mower.utils import config
|
||||||
from mower.utils.graph import SceneGraphSolver
|
from mower.utils.graph import SceneGraphSolver
|
||||||
from mower.utils.image import cropimg, loadres, thres2
|
from mower.utils.image import cropimg, loadres, thres2
|
||||||
from mower.utils.log import logger
|
from mower.utils.log import logger
|
||||||
|
from mower.utils.rapidocr import engine
|
||||||
from mower.utils.recognize import Scene
|
from mower.utils.recognize import Scene
|
||||||
from mower.utils.vector import va
|
from mower.utils.vector import va
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ class PlaceSolver(SceneGraphSolver):
|
||||||
name_img = cv2.copyMakeBorder(
|
name_img = cv2.copyMakeBorder(
|
||||||
name_img, 48, 48, 48, 48, cv2.BORDER_REPLICATE
|
name_img, 48, 48, 48, 48, cv2.BORDER_REPLICATE
|
||||||
)
|
)
|
||||||
name = rapidocr.engine(
|
name = engine(
|
||||||
name_img,
|
name_img,
|
||||||
use_det=True,
|
use_det=True,
|
||||||
use_cls=False,
|
use_cls=False,
|
||||||
|
@ -117,7 +118,7 @@ class PlaceSolver(SceneGraphSolver):
|
||||||
time_img = cv2.copyMakeBorder(
|
time_img = cv2.copyMakeBorder(
|
||||||
time_img, 48, 48, 48, 48, cv2.BORDER_REPLICATE
|
time_img, 48, 48, 48, 48, cv2.BORDER_REPLICATE
|
||||||
)
|
)
|
||||||
time = rapidocr.engine(
|
time = engine(
|
||||||
time_img,
|
time_img,
|
||||||
use_det=True,
|
use_det=True,
|
||||||
use_cls=False,
|
use_cls=False,
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import cv2
|
import cv2
|
||||||
|
|
||||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||||
from mower.utils import config, rapidocr
|
from mower.utils import config
|
||||||
from mower.utils.graph import SceneGraphSolver
|
from mower.utils.graph import SceneGraphSolver
|
||||||
from mower.utils.image import cropimg
|
from mower.utils.image import cropimg
|
||||||
from mower.utils.log import logger
|
from mower.utils.log import logger
|
||||||
|
from mower.utils.rapidocr import engine
|
||||||
from mower.utils.recognize import Scene
|
from mower.utils.recognize import Scene
|
||||||
|
|
||||||
from .utils import clue_cls, exit_pos
|
from .utils import clue_cls, exit_pos
|
||||||
|
@ -32,7 +33,7 @@ class ReceiveSolver(SceneGraphSolver):
|
||||||
name_img = cv2.copyMakeBorder(
|
name_img = cv2.copyMakeBorder(
|
||||||
name_img, 48, 48, 48, 48, cv2.BORDER_REPLICATE
|
name_img, 48, 48, 48, 48, cv2.BORDER_REPLICATE
|
||||||
)
|
)
|
||||||
name = rapidocr.engine(
|
name = engine(
|
||||||
name_img,
|
name_img,
|
||||||
use_det=True,
|
use_det=True,
|
||||||
use_cls=False,
|
use_cls=False,
|
||||||
|
|
|
@ -62,12 +62,7 @@ class ReportSolver(SceneGraphSolver):
|
||||||
logger.info("今天的基报看过了")
|
logger.info("今天的基报看过了")
|
||||||
return True
|
return True
|
||||||
logger.info("康康大基报捏~")
|
logger.info("康康大基报捏~")
|
||||||
try:
|
return super().run()
|
||||||
super().run()
|
|
||||||
return True
|
|
||||||
except Exception as e:
|
|
||||||
logger.exception(e)
|
|
||||||
return False
|
|
||||||
|
|
||||||
def transition(self) -> bool:
|
def transition(self) -> bool:
|
||||||
if self.scene() == Scene.RIIC_REPORT:
|
if self.scene() == Scene.RIIC_REPORT:
|
||||||
|
|
|
@ -7,15 +7,14 @@ import numpy as np
|
||||||
from mower.data import agent_list
|
from mower.data import agent_list
|
||||||
from mower.models import Digtal
|
from mower.models import Digtal
|
||||||
from mower.solvers.navigation.utils import generate_name
|
from mower.solvers.navigation.utils import generate_name
|
||||||
from mower.utils import config, rapidocr
|
from mower.utils import config
|
||||||
from mower.utils.graph import SceneGraphSolver
|
from mower.utils.graph import SceneGraphSolver
|
||||||
from mower.utils.image import cropimg, loadres, thres2
|
from mower.utils.image import cropimg, loadres, thres2
|
||||||
from mower.utils.log import logger
|
from mower.utils.log import logger
|
||||||
|
from mower.utils.rapidocr import engine
|
||||||
from mower.utils.recognize import Scene
|
from mower.utils.recognize import Scene
|
||||||
from mower.utils.vector import va
|
from mower.utils.vector import va
|
||||||
|
|
||||||
rapidocr.initialize_ocr()
|
|
||||||
|
|
||||||
profession_list = [
|
profession_list = [
|
||||||
"PIONEER",
|
"PIONEER",
|
||||||
"WARRIOR",
|
"WARRIOR",
|
||||||
|
@ -65,7 +64,7 @@ class OperatorSolver(SceneGraphSolver):
|
||||||
img = thres2(config.recog.gray, 200)
|
img = thres2(config.recog.gray, 200)
|
||||||
img = cropimg(img, ((20, 680), (630, 740)))
|
img = cropimg(img, ((20, 680), (630, 740)))
|
||||||
profession = self.profession()
|
profession = self.profession()
|
||||||
ocr_result = rapidocr.engine(img, use_det=False, use_cls=False)[0][0][0]
|
ocr_result = engine(img, use_det=False, use_cls=False)[0][0][0]
|
||||||
logger.debug(f"{profession=} {ocr_result=}")
|
logger.debug(f"{profession=} {ocr_result=}")
|
||||||
|
|
||||||
ocr_result = ocr_result.replace(".", "").strip()
|
ocr_result = ocr_result.replace(".", "").strip()
|
||||||
|
|
|
@ -6,13 +6,14 @@ from typing import Optional
|
||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from mower.utils import config, rapidocr
|
from mower.utils import config
|
||||||
from mower.utils import typealias as tp
|
from mower.utils import typealias as tp
|
||||||
from mower.utils.csleep import MowerExit
|
from mower.utils.csleep import MowerExit
|
||||||
from mower.utils.graph import SceneGraphSolver
|
from mower.utils.graph import SceneGraphSolver
|
||||||
from mower.utils.image import cropimg, loadres, thres2
|
from mower.utils.image import cropimg, loadres, thres2
|
||||||
from mower.utils.log import logger
|
from mower.utils.log import logger
|
||||||
from mower.utils.matcher import Matcher
|
from mower.utils.matcher import Matcher
|
||||||
|
from mower.utils.rapidocr import engine
|
||||||
from mower.utils.scene import Scene
|
from mower.utils.scene import Scene
|
||||||
|
|
||||||
src_pts = np.float32([[0, 97], [1920, 97], [-400, 1080], [2320, 1080]])
|
src_pts = np.float32([[0, 97], [1920, 97], [-400, 1080], [2320, 1080]])
|
||||||
|
@ -294,7 +295,7 @@ class ReclamationAlgorithm(SceneGraphSolver):
|
||||||
def detect_score(self, scope=None, find_max=True):
|
def detect_score(self, scope=None, find_max=True):
|
||||||
if find_max and self.find("ra/max", scope=scope, score=0.7):
|
if find_max and self.find("ra/max", scope=scope, score=0.7):
|
||||||
return "已达上限"
|
return "已达上限"
|
||||||
score = rapidocr.engine(
|
score = engine(
|
||||||
thres2(cropimg(config.recog.gray, scope), 127),
|
thres2(cropimg(config.recog.gray, scope), 127),
|
||||||
use_det=False,
|
use_det=False,
|
||||||
use_cls=False,
|
use_cls=False,
|
||||||
|
|
|
@ -20,6 +20,8 @@ from mower.utils.skland import (
|
||||||
|
|
||||||
|
|
||||||
class SKLand:
|
class SKLand:
|
||||||
|
solver_name = "森空岛签到"
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.record_path = get_path("@app/tmp/skland.csv")
|
self.record_path = get_path("@app/tmp/skland.csv")
|
||||||
|
|
||||||
|
@ -28,7 +30,7 @@ class SKLand:
|
||||||
self.sign_token = ""
|
self.sign_token = ""
|
||||||
self.all_recorded = True
|
self.all_recorded = True
|
||||||
|
|
||||||
def start(self):
|
def run(self):
|
||||||
for item in config.conf.skland_info:
|
for item in config.conf.skland_info:
|
||||||
if self.has_record(item.account):
|
if self.has_record(item.account):
|
||||||
continue
|
continue
|
||||||
|
@ -62,7 +64,7 @@ class SKLand:
|
||||||
f'{i.get("nickName")}获得了{res["name"]}×{j.get("count") or 1}'
|
f'{i.get("nickName")}获得了{res["name"]}×{j.get("count") or 1}'
|
||||||
)
|
)
|
||||||
if len(self.reward) > 0:
|
if len(self.reward) > 0:
|
||||||
return self.record_log()
|
return True
|
||||||
if self.all_recorded:
|
if self.all_recorded:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
engine = None
|
|
||||||
|
|
||||||
|
|
||||||
def initialize_ocr(score=0.3):
|
|
||||||
global engine
|
|
||||||
if not engine:
|
|
||||||
from rapidocr_onnxruntime import RapidOCR
|
from rapidocr_onnxruntime import RapidOCR
|
||||||
|
|
||||||
engine = RapidOCR(text_score=score)
|
from mower.utils.log import logger
|
||||||
|
|
||||||
|
logger.info("加载OCR")
|
||||||
|
engine = RapidOCR(text_score=0.3)
|
||||||
|
logger.info("OCR加载完成")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from datetime import datetime, time, timedelta
|
from datetime import datetime, time, timedelta
|
||||||
from typing import Any
|
from importlib import import_module
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
@ -9,10 +9,18 @@ from mower.utils.log import logger
|
||||||
from mower.utils.simulator import restart_simulator
|
from mower.utils.simulator import restart_simulator
|
||||||
|
|
||||||
|
|
||||||
|
def import_solver(full_name: str):
|
||||||
|
index = full_name.rfind(".")
|
||||||
|
module_name = full_name[:index]
|
||||||
|
class_name = full_name[index + 1 :]
|
||||||
|
module = import_module(module_name)
|
||||||
|
return getattr(module, class_name)
|
||||||
|
|
||||||
|
|
||||||
class BasicTask(BaseModel):
|
class BasicTask(BaseModel):
|
||||||
"内部使用"
|
"内部使用"
|
||||||
|
|
||||||
solver: Any
|
solver: str
|
||||||
"调用solver().run()"
|
"调用solver().run()"
|
||||||
|
|
||||||
priority: int = 10
|
priority: int = 10
|
||||||
|
@ -23,9 +31,10 @@ class BasicTask(BaseModel):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _solver_name(self):
|
def _solver_name(self):
|
||||||
if self.solver.solver_name is None:
|
solver_class = import_solver(self.solver)
|
||||||
return self.solver.__qualname__
|
if solver_class.solver_name is None:
|
||||||
return self.solver.solver_name
|
return solver_class.__qualname__
|
||||||
|
return solver_class.solver_name
|
||||||
|
|
||||||
def _get_next_execution(self, now: datetime):
|
def _get_next_execution(self, now: datetime):
|
||||||
return now
|
return now
|
||||||
|
@ -109,6 +118,18 @@ class Scheduler:
|
||||||
logger.info(f"注册任务:{task}")
|
logger.info(f"注册任务:{task}")
|
||||||
self.task_list.append(task)
|
self.task_list.append(task)
|
||||||
|
|
||||||
|
def register_one_time(self, solver: str, time: datetime, priority: int = 10):
|
||||||
|
self.register(OneTimeTask(solver=solver, time=time, priority=priority))
|
||||||
|
|
||||||
|
def register_periodic(self, solver: str, interval: timedelta, priority: int = 20):
|
||||||
|
self.register(PeriodicTask(solver=solver, interval=interval, priority=priority))
|
||||||
|
|
||||||
|
def register_daily(self, solver: str, offset: timedelta, priority: int = 30):
|
||||||
|
self.register(DailyTask(solver=solver, time_offset=offset, priority=priority))
|
||||||
|
|
||||||
|
def register_long(self, solver: str, priority: int = 40):
|
||||||
|
self.register(LongTask(solver=solver, priority=priority))
|
||||||
|
|
||||||
def list_tasks(self):
|
def list_tasks(self):
|
||||||
for i, task in enumerate(self.task_list):
|
for i, task in enumerate(self.task_list):
|
||||||
logger.info(f"({i + 1}/{len(self.task_list)}) {task}")
|
logger.info(f"({i + 1}/{len(self.task_list)}) {task}")
|
||||||
|
@ -135,7 +156,7 @@ class Scheduler:
|
||||||
[task for _time, task in execution_list if _time <= now],
|
[task for _time, task in execution_list if _time <= now],
|
||||||
key=lambda task: task.priority,
|
key=lambda task: task.priority,
|
||||||
)
|
)
|
||||||
solver = next_task.solver()
|
solver = import_solver(next_task.solver)()
|
||||||
try:
|
try:
|
||||||
stop_time = min(
|
stop_time = min(
|
||||||
[
|
[
|
||||||
|
|
86
scheduler.py
Executable file
86
scheduler.py
Executable file
|
@ -0,0 +1,86 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
from mower.utils import path
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) == 2:
|
||||||
|
path.global_space = sys.argv[1]
|
||||||
|
|
||||||
|
from mower.utils import config
|
||||||
|
from mower.utils.scheduler import scheduler
|
||||||
|
|
||||||
|
conf = config.conf
|
||||||
|
now = datetime.now()
|
||||||
|
|
||||||
|
# scheduler.register(
|
||||||
|
# OneTimeTask(
|
||||||
|
# solver=MiniBase,
|
||||||
|
# time=now,
|
||||||
|
# )
|
||||||
|
# )
|
||||||
|
|
||||||
|
if conf.sign_in.enable:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.sign_in.SignInManager",
|
||||||
|
offset=timedelta(hours=4),
|
||||||
|
priority=15,
|
||||||
|
)
|
||||||
|
if conf.visit_friend:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.credit.CreditSolver",
|
||||||
|
offset=timedelta(hours=4),
|
||||||
|
priority=16,
|
||||||
|
)
|
||||||
|
if conf.report_enable:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.infra.report.ReportSolver",
|
||||||
|
offset=timedelta(hours=4),
|
||||||
|
priority=17,
|
||||||
|
)
|
||||||
|
if conf.switch_assistants:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.infra.switch_assistants.SwitchAssistantsSolver",
|
||||||
|
offset=timedelta(hours=4),
|
||||||
|
priority=18,
|
||||||
|
)
|
||||||
|
if conf.skland_enable:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.skland.SKLand",
|
||||||
|
offset=timedelta(hours=3),
|
||||||
|
priority=19,
|
||||||
|
)
|
||||||
|
if conf.check_mail_enable:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.mail.MailSolver",
|
||||||
|
offset=timedelta(hours=4),
|
||||||
|
priority=20,
|
||||||
|
)
|
||||||
|
if conf.maa_credit_fight:
|
||||||
|
scheduler.register_daily(
|
||||||
|
solver="mower.solvers.fight.credit_fight.CreditFight",
|
||||||
|
offset=timedelta(hours=4),
|
||||||
|
priority=21,
|
||||||
|
)
|
||||||
|
if conf.enable_party:
|
||||||
|
scheduler.register_periodic(
|
||||||
|
solver="mower.solvers.infra.clue.ClueManager",
|
||||||
|
interval=timedelta(hours=1),
|
||||||
|
priority=25,
|
||||||
|
)
|
||||||
|
if conf.maa_enable:
|
||||||
|
scheduler.register_periodic(
|
||||||
|
solver="mower.solvers.operation.OperationManager",
|
||||||
|
interval=timedelta(hours=config.conf.maa_gap),
|
||||||
|
priority=26,
|
||||||
|
)
|
||||||
|
if conf.maa_depot_enable:
|
||||||
|
scheduler.register_periodic(
|
||||||
|
solver="mower.solvers.depotREC.depotREC",
|
||||||
|
interval=timedelta(hours=config.conf.maa_gap),
|
||||||
|
priority=27,
|
||||||
|
)
|
||||||
|
|
||||||
|
scheduler.schedule()
|
Loading…
Add table
Add a link
Reference in a new issue