LISHUZUOXUN_yangjiang/PureBackend/standard_manager.py

194 lines
7.5 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
# coding: gb2312
import json
import os
import time
import traceback
from AcrossPlatform.get_platform import GLOBAL_DIR
from DeviceDefine.consensus import *
from LogRecord.log_recorder import GLOBAL_LOG
from PureBackend.base_driver import BaseDriver, MODEL_MEDIAPIPE
from PureBackend.general import *
# ѵ<><D1B5><EFBFBD>Ѷ<EFBFBD>
difficulty_lookup = {
DIFFICULT_HARD: "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>", DIFFICULT_EASY: "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>", COMMON_EASY: "<EFBFBD><EFBFBD>ͨ<EFBFBD>Ѷ<EFBFBD>"
}
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼
standards_lookup = {
STANDARDS_NEW: "<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼", STANDARDS_OLD: "<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼"
}
DIFFICULT_FILE = os.path.join(GLOBAL_DIR, "train_info.json")
SUMMARY_FILE = os.path.join(GLOBAL_DIR, "summary_info.json")
DIFFICULTY_MES = "difficulty_mes"
DIFFICULTY_DIS = "difficulty_display"
DIFFICULTY = "difficulty"
STANDARDS_DIS = "standards_display"
STANDARDS = "standards"
class StandardManager(BaseDriver):
def __init__(self, master_mode=True, positioning=True, camera=True, model=MODEL_MEDIAPIPE, speaker=True,
multi_positioning_mode=True, device_type=UNKNOWN, pure_mode=False):
super().__init__(master_mode, positioning, camera, model, speaker, multi_positioning_mode, device_type, pure_mode)
# <20><><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>
# <20><><EFBFBD>ɳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>׼json<6F>ļ<EFBFBD>
if not os.path.exists(DIFFICULT_FILE):
self.train_info = {
DIFFICULTY_DIS: difficulty_lookup[DIFFICULT_HARD],
DIFFICULTY: DIFFICULT_HARD,
STANDARDS_DIS: standards_lookup[STANDARDS_OLD],
STANDARDS: STANDARDS_OLD,
}
try:
with open(DIFFICULT_FILE, "w+", encoding='utf-8_sig') as f:
json.dump(self.train_info, f, ensure_ascii=False)
except:
pass
else:
try:
with open(DIFFICULT_FILE, "r", encoding='utf-8_sig') as f:
self.train_info = json.load(f)
except:
pass
# <20><><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
if not os.path.exists(SUMMARY_FILE):
batch = self.manager.get_this_batch()
if not batch:
this_time = int(time.time())
batch = time.strftime("%Y<EFBFBD><EFBFBD>%m<EFBFBD><EFBFBD>%d<EFBFBD><EFBFBD>%", time.localtime(this_time))
self.summary_info = {
'batch': batch,
'default_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_batch': batch,
'default_class_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_class_batch': batch,
'default_group_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_team_project': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_team_batch': batch,
'default_team_class': ['1<EFBFBD><EFBFBD>'],
'default_personal_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_personal_batch': [batch],
'default_personal_personal': {'id': 1, 'name': '<EFBFBD><EFBFBD>Ա1'}
}
try:
with open(SUMMARY_FILE, "w+", encoding='utf-8_sig') as f:
json.dump(self.summary_info, f, ensure_ascii=False)
except:
pass
else:
try:
with open(SUMMARY_FILE, "r", encoding='utf-8_sig') as f:
self.summary_info = json.load(f)
batch = self.manager.get_this_batch()
if batch:
self.summary_info['batch'] = self.manager.get_this_batch()
except:
batch = self.manager.get_this_batch()
if not batch:
this_time = int(time.time())
batch = time.strftime("%Y<EFBFBD><EFBFBD>%m<EFBFBD><EFBFBD>%d<EFBFBD><EFBFBD>%", time.localtime(this_time))
self.summary_info = {
'batch': batch,
'default_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_batch': batch,
'default_class_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_class_batch': batch,
'default_group_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_team_project': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_team_batch': batch,
'default_team_class': ['1<EFBFBD><EFBFBD>'],
'default_personal_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
'default_personal_batch': [batch],
'default_personal_personal': {'id': 1, 'name': '<EFBFBD><EFBFBD>Ա1'}
}
# <20><><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>Ϣjson
def update_summary_info(self):
try:
with open(SUMMARY_FILE, "w", encoding='utf-8_sig') as f:
json.dump(self.summary_info, f, ensure_ascii=False)
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
return False
# <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GET
def get_batch(self):
try:
batch = self.summary_info['batch']
return batch
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
# <20><><EFBFBD><EFBFBD><EFBFBD>µĿ<C2B5><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GET
def set_batch(self):
try:
batch = self.manager.generate_batch()
self.summary_info['batch'] = batch
return batch
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
# <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>׼
def get_train_info(self):
try:
with open(DIFFICULT_FILE, 'r', encoding='utf-8_sig') as read_json:
self.train_info = json.load(read_json)
except:
if os.path.exists(DIFFICULT_FILE):
os.remove(DIFFICULT_FILE)
self.train_info = {
DIFFICULTY_DIS: difficulty_lookup[DIFFICULT_HARD],
DIFFICULTY: DIFFICULT_HARD,
STANDARDS_DIS: standards_lookup[STANDARDS_OLD],
STANDARDS: STANDARDS_OLD,
}
with open(DIFFICULT_FILE, "w+", encoding='utf-8_sig') as f:
json.dump(self.train_info, f, ensure_ascii=False)
return self.train_info
# <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>׼
def set_train_info(self, train_info):
try:
difficulty = train_info.get(DIFFICULTY)
standards = train_info.get(STANDARDS)
if not difficulty or not standards:
return
self.train_info = {
DIFFICULTY_DIS: difficulty_lookup[difficulty],
DIFFICULTY: difficulty,
STANDARDS_DIS: standards_lookup[standards],
STANDARDS: standards
}
with open(DIFFICULT_FILE, "w+", encoding='utf-8_sig') as f:
json.dump(self.train_info, f, ensure_ascii=False)
return True
except:
print(traceback.format_exc())
return False
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>Ѷ<EFBFBD>
@staticmethod
def get_all_difficulty():
return [
{"value": value, "label": label}
for value, label in difficulty_lookup.items()
]
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еı<D0B5>׼
@staticmethod
def get_all_standard():
return [
{"value": value, "label": label}
for value, label in standards_lookup.items()
]