[feature] 上传ArknightsMaa相关文件
This commit is contained in:
Executable
+93
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import asyncio
|
||||
import re
|
||||
import time
|
||||
from datetime import datetime
|
||||
# time record
|
||||
def fprint(s:str)->None:
|
||||
print(s)
|
||||
sys.stdout.flush()
|
||||
|
||||
fprint("-------------------------------------------------------")
|
||||
fprint(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
|
||||
fprint("-------------------------------------------------------")
|
||||
time.sleep(1)
|
||||
|
||||
class CommandProcessor:
|
||||
def Command(self,s:str) -> int:
|
||||
self._command = s
|
||||
fprint("_> " + s)
|
||||
if (t:=os.system(s))!=0:
|
||||
fprint("Fatal Error: Command Failed:" + s)
|
||||
fprint("Error Number: " + str(t))
|
||||
return t
|
||||
return 0
|
||||
def RetryCommand(self,s:str,retry:int=3) -> int:
|
||||
result = 0
|
||||
while retry > 0:
|
||||
result = cp.Command(s)
|
||||
if result == 0:
|
||||
break
|
||||
retry-=1
|
||||
time.sleep(1)
|
||||
return result
|
||||
|
||||
|
||||
async def AsyncCommand(self,command:str,regex:str):
|
||||
self._asyncCommand = command
|
||||
fprint("_> await! " + command)
|
||||
process = await asyncio.create_subprocess_shell(command,stderr=asyncio.subprocess.PIPE)
|
||||
while True:
|
||||
line = (await process.stderr.readline()).decode()
|
||||
fprint(line)
|
||||
if re.search(regex, line):
|
||||
fprint("done")
|
||||
break
|
||||
|
||||
|
||||
|
||||
|
||||
# cp.Command("command")
|
||||
# cp.RetryCommand("command",retry_time:int)
|
||||
# asyncio.run(cp.AsyncCommand("command","stop track regex"))
|
||||
script_dir = os.path.dirname((os.path.abspath(__file__)))
|
||||
cp = CommandProcessor()
|
||||
haveError = False
|
||||
def TaskFailRetry(command:str)->int:
|
||||
retry = 3
|
||||
result = 0
|
||||
while retry > 0:
|
||||
retry -= 1
|
||||
result = cp.RetryCommand(command)
|
||||
if result == 0:
|
||||
return 0
|
||||
fprint(f"Task Command is {command}, ret code is {result}")
|
||||
fprint("Task Failed, retrying...")
|
||||
cp.RetryCommand("maa closedown")
|
||||
cp.RetryCommand("maa run startup")
|
||||
return result
|
||||
# update
|
||||
cp.Command("maa update")
|
||||
cp.Command("maa self update")
|
||||
# fire it up
|
||||
cp.Command("docker stop redroid")
|
||||
os.chdir("/home/lichx/.config/redroid-rk3588/")
|
||||
cp.Command("docker compose up -d")
|
||||
time.sleep(15)
|
||||
cp.RetryCommand("adb connect localhost:5555")
|
||||
cp.RetryCommand("adb -s localhost:5555 shell am start --windowingMode 4 com.hypergryph.arknights/com.u8.sdk.U8UnityContext")
|
||||
# run maa
|
||||
haveError |= TaskFailRetry("maa run startup") != 0
|
||||
haveError |= TaskFailRetry("maa run recruit") != 0
|
||||
haveError |= TaskFailRetry("maa run infrast") != 0
|
||||
haveError |= TaskFailRetry("maa run fight") != 0
|
||||
haveError |= TaskFailRetry("maa run mall") != 0
|
||||
haveError |= TaskFailRetry("maa run award") != 0
|
||||
# storage error log
|
||||
if haveError:
|
||||
cp.Command(f"cp {script_dir}/pyshell.log {script_dir}/pyshell.{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}.log")
|
||||
# shutdown
|
||||
cp.RetryCommand("maa closedown")
|
||||
cp.Command("docker stop redroid")
|
||||
Reference in New Issue
Block a user