|
|
'''
|
|
|
主程序:整合各个模块
|
|
|
1、ui文件调用相应ui模块
|
|
|
2、get_params.py获取参数
|
|
|
3、get_answer.py获取答案
|
|
|
4、cloud.py将json文件存入云端
|
|
|
'''
|
|
|
# 生成图形化界面,引导用户登陆并输入实训网址
|
|
|
# 调用get_params.py获取参数,这一步同时隐含了云端获取答案的过程
|
|
|
# 如果云端答案不存在,则调用get_answer.py获取答案,并展示给用户
|
|
|
# 用户verif选项确认后,调用cloud.py将json文件存入云端
|
|
|
# 导入所需模块
|
|
|
from cloud import upload,download,is_exist
|
|
|
print('处理api相关中...')
|
|
|
download('apis.json')
|
|
|
print('处理完成!')
|
|
|
from get_params import get_parameters
|
|
|
from get_answer import get_answer_from_api,promot,client,get_json,load_api_key,load_json_data
|
|
|
from login_ui import show_login,show_image,MyApp
|
|
|
from trans_to_txt import transToTxt,readJson
|
|
|
import json
|
|
|
import os
|
|
|
from printtxt import print_txt,get_all_txt_file
|
|
|
global finished
|
|
|
finished = False
|
|
|
# 调用login_ui获得用户输入的用户名、密码和实训网址
|
|
|
show_image()
|
|
|
show_login()
|
|
|
|
|
|
# 检查userinfo.json文件是否存在,存在,则程序继续
|
|
|
assert os.path.exists('userinfo.json'), 'userinfo.json文件不存在,请检查'
|
|
|
|
|
|
# 先读取userinfo.json文件,获得用户名、密码和实训网址
|
|
|
with open('userinfo.json', 'r') as f:
|
|
|
userinfo = json.load(f)
|
|
|
user_name = userinfo['name']
|
|
|
password = userinfo['pwd']
|
|
|
url = userinfo['url']
|
|
|
|
|
|
# 调用get_params.py获得参数,完成后本地应该有一个json文件,里面有参数
|
|
|
get_parameters(url,user_name,password)
|
|
|
print('到这一步,参数获取完成!')
|
|
|
# 获得刚才get_params.py生成的json文件名
|
|
|
j_name = readJson()[0]
|
|
|
# 判断j_name文件中是否有answer
|
|
|
with open(j_name,'r',encoding='utf-8') as f:
|
|
|
json_data = json.load(f)
|
|
|
|
|
|
def is_exist_answer(data:dict) -> bool:
|
|
|
for i,j in data.items():
|
|
|
if 'answer' in j.keys():
|
|
|
return True
|
|
|
return False
|
|
|
print('到这一步,判断是否存在答案')
|
|
|
if is_exist_answer(json_data):
|
|
|
pass
|
|
|
else:
|
|
|
print('到这一步,调用api获取答案')
|
|
|
new_data = get_answer_from_api(jsonfile=json_data,client=client,promot=promot)
|
|
|
# 重写本地json文件
|
|
|
with open(j_name,'w',encoding='utf-8') as f:
|
|
|
json.dump(new_data,f,ensure_ascii=False,indent=4)
|
|
|
|
|
|
# 上面的判断执行完后,本地的json文件中已经有answer了,下面实现信息展示
|
|
|
# 先删除本地api.json文件
|
|
|
os.remove('apis.json')
|
|
|
# 使用readJson函数读取当前目录下的所有json文件
|
|
|
JSS = readJson()
|
|
|
# 构建txt文件
|
|
|
transToTxt(JSS)
|
|
|
# 展示txt文件
|
|
|
# print('哈哈终于要写完了')
|
|
|
print_txt(get_all_txt_file(os.getcwd()))
|
|
|
# #打印完,删除本地txt和json文件
|
|
|
for i in JSS:
|
|
|
os.remove(i)
|
|
|
# 删除本地所有数字开头的txt文件
|
|
|
for i in os.listdir():
|
|
|
if i.split('.')[0].isdigit() and i.endswith('.txt'):
|
|
|
os.remove(i)
|
|
|
# 判断云端是否存在答案json,如果不存在,则上传
|
|
|
if not is_exist(j_name):
|
|
|
upload(j_name) |