2022-08-05 09:09:03 +00:00
#Server Mod
import os
import time
import threading
import main as single
import main_multi as multi
from loghelper import log
import json
time_interval = 720 #默认签到间隔时间, 单位minute(分钟)
mod = 1 #单用户模式/自动判断
def runingtime ( ) :
return int ( time . time ( ) )
2022-08-05 17:46:31 +00:00
def control ( time_interval , mod , event , detal ) :
2022-08-05 09:09:03 +00:00
last_time = runingtime ( )
while True :
now_time = runingtime ( )
if now_time > last_time + time_interval * 60 :
if mod == 1 :
try :
single . main ( )
except :
log . info ( " single_user start failed " )
else :
try :
multi . main_multi ( True )
except :
log . info ( " multi_user start failed " )
last_time = runingtime ( )
if event . is_set ( ) :
2022-08-05 10:01:07 +00:00
log . info ( " Stoping threading " )
2022-08-05 09:09:03 +00:00
break
2022-08-05 17:46:31 +00:00
if ( detal . is_set ( ) ) :
log . info ( " The Next check time is {} s " . format ( last_time - now_time + time_interval * 60 ) )
2022-08-05 09:09:03 +00:00
time . sleep ( 20 )
2022-08-05 17:46:31 +00:00
def command ( detal ) :
2022-08-05 09:09:03 +00:00
global mod
global time_interval
2022-08-05 17:46:31 +00:00
global show
show = False #显示倒计时信息
if show :
detal . set ( )
help = " command windows \n stop:stop server \n reload:reload config and refish tiem \n single:test single config \n mulit:test mulit conifg \n mod x:x is refer single or multi 1 is single 2 is multi \n add ' yourcookie ' \n set user attribute value: such set username(*.json) enable(attribute) Ture(value) \n time x:set interval time (minute) \n show true/false:show the time count "
2022-08-05 09:09:03 +00:00
log . info ( help )
while True :
command = input ( )
if command == " help " or command == " ? " or command == " " :
log . info ( help )
if command == " stop " or command == " exit " :
2022-08-05 10:01:07 +00:00
log . info ( " Stoping Server Plase Wait " )
2022-08-05 09:09:03 +00:00
return False
if command == " reload " :
return True
if command == " test " :
try :
single . main ( )
except :
log . info ( " single_user start failed " )
if command == " single " :
try :
single . main ( )
except :
log . info ( " single_user start failed " )
if command == " mulit " :
try :
multi . main_multi ( True )
except :
log . info ( " multi_user start failed " )
command = command . split ( ' ' )
for i in range ( 0 , len ( command ) ) :
if command [ i ] == " time " :
if len ( command ) == 2 :
time_interval = int ( command [ 1 ] )
2022-08-05 10:01:07 +00:00
log . info ( " switching interval to {} minute " . format ( time_interval ) )
return True
2022-08-05 09:09:03 +00:00
if command [ i ] == " mod " :
if len ( command ) == 2 :
2022-08-05 17:46:31 +00:00
mod_new = int ( command [ 1 ] )
if mod_new > 2 or mod_new < 1 :
2022-08-05 09:09:03 +00:00
log . info ( " error mod " )
else :
2022-08-05 17:46:31 +00:00
mod = mod_new
2022-08-05 09:09:03 +00:00
log . info ( " switching mod to {} " . format ( mod ) )
2022-08-05 17:46:31 +00:00
else :
log . info ( " Error Command " )
if command [ i ] == " show " :
if len ( command ) == 2 :
if command [ 1 ] == " true " :
show = True
detal . set ( )
log . info ( " switching to detail mod " )
if command [ 1 ] == " false " :
detal . unset ( )
show = False
log . info ( " switching to slient mod " )
2022-08-05 09:09:03 +00:00
else :
log . info ( " Error Command " )
if command [ i ] == " add " :
2022-08-05 10:01:07 +00:00
cookie = " "
for m in range ( i , len ( command ) ) :
cookie + = command [ m ]
log . info ( " adding " )
if ( mod == 1 ) :
name = " config "
else :
log . info ( " Plase input your config name(*.json): " )
name = input ( )
config = {
2022-08-05 09:09:03 +00:00
' enable ' : True , ' version ' : 5 ,
' account ' : {
2022-08-05 10:01:07 +00:00
' cookie ' : cookie ,
2022-08-05 09:09:03 +00:00
' login_ticket ' : ' ' ,
' stuid ' : ' ' ,
' stoken ' : ' '
} ,
' mihoyobbs ' : {
' enable ' : True , ' checkin ' : True , ' checkin_multi ' : True , ' checkin_multi_list ' : [ 2 , 5 ] ,
' read_posts ' : True , ' like_posts ' : True , ' un_like ' : True , ' share_post ' : True
} ,
' games ' : {
' cn ' : {
' enable ' : True ,
' genshin ' : { ' auto_checkin ' : True , ' black_list ' : [ ] } ,
' hokai2 ' : { ' auto_checkin ' : False , ' black_list ' : [ ] } ,
' honkai3rd ' : { ' auto_checkin ' : False , ' black_list ' : [ ] } ,
' tears_of_themis ' : { ' auto_checkin ' : False , ' black_list ' : [ ] } ,
} ,
' os ' : {
' enable ' : False , ' cookie ' : ' ' ,
' genshin ' : { ' auto_checkin ' : False , ' black_list ' : [ ] }
}
}
}
2022-08-05 10:01:07 +00:00
file_path = os . path . dirname ( os . path . realpath ( __file__ ) ) + " /config/ " + name + " .json "
file = open ( file_path , ' w ' )
file . write ( json . dumps ( config ) )
file . close ( )
log . info ( " Saving OK " )
2022-08-05 09:09:03 +00:00
if command [ i ] == " set " :
if len ( command ) == 4 :
file_path = os . path . dirname ( os . path . realpath ( __file__ ) ) + " /config/ " + command [ 1 ] + " .json "
if os . path . exists ( file_path ) == False :
log . info ( " User is not exist " )
else :
with open ( file_path , " r " ) as f :
new_conifg = json . load ( f )
value = command [ 3 ]
if ( command [ 3 ] == " true " ) :
value = True
if ( command [ 3 ] == " false " ) :
value = False
if ( command [ 3 ] . isdigit ( ) ) :
value = int ( command [ 3 ] )
new_conifg [ command [ 2 ] ] = value
file = open ( file_path , ' w ' )
file . write ( json . dumps ( new_conifg ) )
file . close ( )
2022-08-05 10:01:07 +00:00
return True
2022-08-05 09:09:03 +00:00
if __name__ == ' __main__ ' :
log . info ( ' Running in Server Mod ' )
time_interval = 720
file_path = os . path . dirname ( os . path . realpath ( __file__ ) ) + " /config/config.json "
if os . path . exists ( file_path ) :
mod = 1
else :
mod = 2
while True :
log . info ( " switching to mod {} " . format ( mod ) )
t1_stop = threading . Event ( )
2022-08-05 17:46:31 +00:00
detal = threading . Event ( )
thread1 = threading . Thread ( name = ' time_check ' , target = control , args = ( time_interval , mod , t1_stop , detal ) )
2022-08-05 09:09:03 +00:00
thread1 . start ( )
2022-08-05 10:01:07 +00:00
try :
2022-08-05 17:46:31 +00:00
if command ( detal ) :
2022-08-05 10:01:07 +00:00
t1_stop . set ( )
continue
else :
t1_stop . set ( )
break
except :
2022-08-05 09:09:03 +00:00
t1_stop . set ( )
continue