112 lines
3.5 KiB
Python
112 lines
3.5 KiB
Python
import os
|
|
import sqlite3
|
|
import datetime
|
|
import time
|
|
import json
|
|
from termcolor import colored
|
|
|
|
def ifoff():
|
|
while True:
|
|
time.sleep(10)
|
|
with open(logpath,'r',encoding='utf-8') as f:
|
|
logs=f.readlines()[-1:-10:-1]
|
|
log=''.join(logs)
|
|
print(colored('\n'.join(logs[::-1]),"green"))
|
|
if "任务已全部完成!" in log:
|
|
return True
|
|
elif ("请检查连接设置或尝试重启模拟器与 ADB 或重启电脑" in log) or ("已停止" in log):
|
|
return False
|
|
|
|
def killpath(maapath):
|
|
kpath='.\\mytaskkill.exe '
|
|
for i in maapath:
|
|
if i=='/':
|
|
kpath=kpath+'\\'
|
|
else:
|
|
kpath=kpath+i
|
|
return kpath
|
|
|
|
def runmaa(tel,game):
|
|
with open(setpath,"r",encoding="utf-8") as f:
|
|
data = json.load(f)
|
|
data["Configurations"]["Default"]["Start.AccountName"]=tel[:3]+"****"+tel[7:]
|
|
week=str(datetime.datetime.now().strftime('%A'))
|
|
if week=="Monday":
|
|
data["Configurations"]["Default"]["MainFunction.Stage1"]="Annihilation"
|
|
else:
|
|
data["Configurations"]["Default"]["MainFunction.Stage1"]=game
|
|
with open(setpath,"w",encoding="utf-8") as f:
|
|
json.dump(data,f)
|
|
os.system('start '+maapath)
|
|
time.sleep(60)
|
|
if ifoff():
|
|
return True
|
|
else:
|
|
command=killpath(maapath)
|
|
os.system(command)
|
|
os.system('start '+maapath)
|
|
time.sleep(60)
|
|
if ifoff():
|
|
return True
|
|
else:
|
|
command=killpath(maapath)
|
|
os.system(command)
|
|
return False
|
|
|
|
def updata(id):
|
|
db=sqlite3.connect(DATABASE)
|
|
cur=db.cursor()
|
|
cur.execute("SELECT * FROM adminx WHERE admin='%s'" %(id))
|
|
info=cur.fetchall()
|
|
cur.execute("UPDATE adminx SET day=%d WHERE admin='%s'" %(info[0][2]-1,id))
|
|
db.commit()
|
|
cur.execute("UPDATE adminx SET last='%s' WHERE admin='%s'" %(curdate,id))
|
|
print("upcurdate")
|
|
db.commit()
|
|
cur.close()
|
|
db.close()
|
|
return 0
|
|
|
|
#获取PATH与用户数据
|
|
DATABASE="data/data.db"
|
|
db=sqlite3.connect(DATABASE)
|
|
cur=db.cursor()
|
|
cur.execute("SELECT * FROM setting WHERE True")
|
|
path=cur.fetchall()
|
|
path=str(path[0][0])
|
|
setpath=path+"/config/gui.json"
|
|
logpath=path+"/debug/gui.log"
|
|
maapath=path+"/MAA.exe"
|
|
cur.execute("SELECT * FROM adminx WHERE True")
|
|
data=cur.fetchall()
|
|
data=[list(row) for row in data]
|
|
cur.close()
|
|
db.close()
|
|
#开始执行
|
|
curdate=datetime.date.today()
|
|
curdate=curdate.strftime('%Y-%m-%d')
|
|
idnew=[]
|
|
idold=[]
|
|
idfail=[]
|
|
for i in range(len(data)):
|
|
if data[i][3]=='y' and data[i][4]!=curdate and data[i][2]>0:
|
|
book=runmaa(data[i][1],data[i][5])
|
|
if book:
|
|
updata(data[i][0])
|
|
idnew.append(data[i][0])
|
|
print(colored("已完成"+data[i][0]+"今日的代理","yellow"))
|
|
else:
|
|
idfail.append(data[i][0])
|
|
print(colored("异常中止"+data[i][0]+"的代理","red"))
|
|
for i in range(len(data)):
|
|
if data[i][3]=='y' and data[i][4]==curdate and data[i][2]>0:
|
|
book=runmaa(data[i][1],data[i][5])
|
|
if book:
|
|
idold.append(data[i][0])
|
|
print(colored("已重复完成"+data[i][0]+"今日的代理","yellow"))
|
|
with open("log.txt","w", encoding="utf-8") as f:
|
|
print("任务结束,已完成数:"+str(len(idnew))+",未完成数:"+str(len(idfail))+",重复执行数:"+str(len(idold)),file=f)
|
|
if len(idfail)!=0:
|
|
print("代理未完成的用户:",file=f)
|
|
for i in range(len(idfail)):
|
|
print(idfail[i],file=f) |