1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-12 12:08:21 +08:00
Files
AzurLaneAutoScript/module/config/scheduler.py

88 lines
2.6 KiB
Python
Raw Normal View History

2021-09-08 12:50:10 +08:00
import time
2021-09-10 10:50:41 +08:00
from cached_property import cached_property
from module.config.config import AzurLaneConfig, TaskEnd
2021-09-08 12:50:10 +08:00
from module.device.device import Device
from module.exception import *
from module.handler.login import LoginHandler
2021-09-10 10:50:41 +08:00
from module.logger import logger
from module.research.research import RewardResearch
2021-09-08 12:50:10 +08:00
class AzurLaneAutoScript:
def __init__(self, config_name='alas'):
self.config_name = config_name
2021-09-10 10:50:41 +08:00
@cached_property
def config(self):
config = AzurLaneConfig(config_name=self.config_name)
config.bind(config.get_next())
return config
@cached_property
def device(self):
device = Device(config=self.config)
return device
2021-09-08 12:50:10 +08:00
def run(self, command):
logger.attr('Command', command)
while 1:
try:
self.__getattribute__(command)()
return True
except TaskEnd as e:
return True
except GameNotRunningError as e:
logger.warning(e)
az = LoginHandler(self.config, device=self.device)
az.app_restart()
az.ensure_no_unfinished_campaign()
continue
except GameTooManyClickError as e:
logger.warning(e)
self.save_error_log()
az = LoginHandler(self.config, device=self.device)
az.handle_game_stuck()
continue
except GameStuckError as e:
logger.warning(e)
self.save_error_log()
az = LoginHandler(self.config, device=self.device)
az.handle_game_stuck()
continue
except LogisticsRefreshBugHandler as e:
logger.warning(e)
self.save_error_log()
az = LoginHandler(self.config, device=self.device)
az.device.app_stop()
time.sleep(600)
az.app_ensure_start()
continue
except Exception as e:
logger.exception(e)
self.save_error_log()
return False
def save_error_log(self):
"""
Save last 60 screenshots in ./log/error/<timestamp>
Save logs to ./log/error/<timestamp>/log.txt
"""
pass
2021-09-10 10:50:41 +08:00
def research(self):
RewardResearch(config=self.config, device=self.device).run()
2021-09-08 12:50:10 +08:00
def loop(self):
while 1:
2021-09-10 10:50:41 +08:00
success = self.run(self.config.task)
del self.__dict__['config']
if not success:
break
2021-09-08 12:50:10 +08:00
scheduler = AzurLaneAutoScript()
scheduler.loop()