139 lines
4.8 KiB
Python
139 lines
4.8 KiB
Python
import traceback
|
|
import threading
|
|
import logging
|
|
import json
|
|
import time
|
|
import datetime
|
|
|
|
from flask import Flask, request
|
|
from flask_cors import CORS
|
|
|
|
from src.My_Logger.project_logger import LoggerClass
|
|
from src.ark_helper_backend.backend import ArkHelperBackend
|
|
from src.util.mail import send_batch_email
|
|
from src.util.utils import random_time
|
|
|
|
app = Flask(__name__)
|
|
CORS(app, supports_credentials=True)
|
|
admin_key = '1145141919810'
|
|
|
|
|
|
@app.route("/GetCurrentStatus", methods=["POST"])
|
|
def get_current_status():
|
|
input_param_dict = json.loads(request.get_data()) if request.get_data() else {}
|
|
if not input_param_dict:
|
|
return 'No data supplied'
|
|
return json.dumps({'status': 0, 'data': ark_back.is_retrieving_data})
|
|
|
|
|
|
@app.route("/StartDataRetrieve", methods=["POST"])
|
|
def start_data_retrieve():
|
|
input_param_dict = json.loads(request.get_data()) if request.get_data() else {}
|
|
if not input_param_dict:
|
|
return 'No data supplied'
|
|
if input_param_dict.get('admin_key') != admin_key:
|
|
return '403 Forbidden'
|
|
if ark_back.is_retrieving_data():
|
|
return json.dumps({'status': 1, 'data': 'already started'})
|
|
else:
|
|
ark_back.is_retrieving_data = True
|
|
s1 = threading.Thread(target=data_retrieve_thread)
|
|
s2 = threading.Thread(target=skland_sign_in_thread())
|
|
s1.start()
|
|
s2.start()
|
|
return json.dumps({'status': 0, 'data': ark_back.is_retrieving_data})
|
|
|
|
|
|
@app.route("/ChangeStatus", methods=["POST"])
|
|
def change_status():
|
|
input_param_dict = json.loads(request.get_data()) if request.get_data() else {}
|
|
if not input_param_dict:
|
|
return 'No data supplied'
|
|
if input_param_dict.get('admin_key') != admin_key:
|
|
return '403 Forbidden'
|
|
if input_param_dict.get('status') == 'on going' and not ark_back.is_retrieving_data:
|
|
ark_back.is_retrieving_data = True
|
|
s1 = threading.Thread(target=data_retrieve_thread)
|
|
s1.start()
|
|
return json.dumps({'status': 0, 'data': ark_back.is_retrieving_data})
|
|
elif input_param_dict.get('status') == 'breaking' and ark_back.is_retrieving_data:
|
|
ark_back.is_retrieving_data = False
|
|
return json.dumps({'status': 0, 'data': ark_back.is_retrieving_data})
|
|
else:
|
|
return json.dumps({'status': -1})
|
|
|
|
|
|
@app.route("/GetData", methods=["POST"])
|
|
def get_data():
|
|
input_param_dict = json.loads(request.get_data()) if request.get_data() else {}
|
|
if not input_param_dict:
|
|
return 'No data supplied'
|
|
if input_param_dict.get('admin_key') != admin_key:
|
|
return '403 Forbidden'
|
|
gacha_data, payment_data = ark_back.show_data()
|
|
data = {'status': 0, 'gacha_data': gacha_data, 'payment_data': payment_data}
|
|
return json.dumps(data)
|
|
|
|
|
|
@app.route("/RunGetDataNow", methods=["POST"])
|
|
def run_get_data_now():
|
|
input_param_dict = json.loads(request.get_data()) if request.get_data() else {}
|
|
if not input_param_dict:
|
|
return 'No data supplied'
|
|
if input_param_dict.get('admin_key') != admin_key:
|
|
return '403 Forbidden'
|
|
|
|
ark_back.data_retrieve()
|
|
gacha_data, payment_data = ark_back.show_data()
|
|
data = {'status': 0, 'gacha_data': gacha_data, 'payment_data': payment_data}
|
|
return json.dumps(data)
|
|
|
|
|
|
def data_retrieve_thread():
|
|
try:
|
|
while 1:
|
|
# time.sleep(3600)
|
|
if ark_back.is_retrieving_data:
|
|
ark_back.data_retrieve()
|
|
else:
|
|
ark_back.logger.info('Breaking')
|
|
break
|
|
time.sleep(3600)
|
|
except Exception as e:
|
|
print(e, traceback.format_exc())
|
|
ark_back.logger.error(traceback.format_exc())
|
|
send_batch_email(['2654988228@qq.com'], 'Error in ArkHelper data retrieval', str(traceback.format_exc()))
|
|
finally:
|
|
ark_back.logger.info('Data Retrieve Stopped')
|
|
|
|
|
|
def skland_sign_in_thread():
|
|
try:
|
|
last_run = None
|
|
next_run_time = random_time(480, 720)
|
|
while 1:
|
|
if not ark_back.is_retrieving_data:
|
|
break
|
|
time.sleep(20)
|
|
now = datetime.datetime.now()
|
|
if now.strftime('%H:%M') == next_run_time and last_run != now.date():
|
|
next_run_time = random_time(480, 720)
|
|
ark_back.skland_sign_new()
|
|
last_run = now.date()
|
|
except Exception as e:
|
|
print(e, traceback.format_exc())
|
|
ark_back.logger.error(traceback.format_exc())
|
|
send_batch_email(['2654988228@qq.com'], 'Error in ArkHelper Skland Sign-in', str(traceback.format_exc()))
|
|
finally:
|
|
ark_back.logger.info('Data Retrieve Stopped')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print('start')
|
|
logger = LoggerClass().get_log(logging.INFO)
|
|
ark_back = ArkHelperBackend(logger=logger)
|
|
threading.Thread(target=skland_sign_in_thread).start()
|
|
threading.Thread(target=data_retrieve_thread).start()
|
|
app.run(host="192.168.195.194", port=59001)
|
|
|