Add files via upload

master
JesterHey 2 years ago committed by GitHub
parent 48c9429cf9
commit eeac702009
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -28,14 +28,7 @@ def download(name):
# 上传函数,用于获得答案后上传到云端,此步骤在获得答案后调用 # 上传函数,用于获得答案后上传到云端,此步骤在获得答案后调用
# (to do)如果用户将答案认证为正确则将本地json中的verified参数改为True后再上传并覆盖云端文件 # (to do)如果用户将答案认证为正确则将本地json中的verified参数改为True后再上传并覆盖云端文件
def upload(name): def upload(name):
# 上传前先检验文件中的每个键对应的值的answer键是否存在以及其对应的值是否为空如果为空则不上传 # 检查文件是否存在,如果不存在,则上传
with open(name,'r',encoding='utf-8') as f:
data = json.load(f)
for i,j in data.items():
if 'answer' not in j.keys() or j['answer'] == '':
# 断言查询结果并抛出异常
assert False,'答案为空,不予上传'
# 再检查文件是否存在,如果不存在,则上传
if not is_exist(name): if not is_exist(name):
bucket.put_object_from_file(name, name) bucket.put_object_from_file(name, name)
@ -49,4 +42,4 @@ if __name__ == '__main__':
# print(is_exist('18503.json')) # print(is_exist('18503.json'))
#download('18503.json') #download('18503.json')
#检查云端所有文件 #检查云端所有文件
print([i for i in bucket.list_objects()]) upload('pro_233226_Python.json')

@ -32,14 +32,6 @@ def get_programmingjson(file:str) -> list:
if i.endswith('.json') and i.startswith('pro'): if i.endswith('.json') and i.startswith('pro'):
jsonfiles.append(i) jsonfiles.append(i)
return jsonfiles return jsonfiles
#读取当前目录下的json文件和对应的编程语言
j_shixun = get_shixunjson(os.getcwd())
j_programming = get_programmingjson(os.getcwd())
if j_shixun == []:
language = get_programmingjson(os.getcwd())[0].split('.')[0].split('_')[-1]
else:
language = get_shixunjson(os.getcwd())[0].split('.')[0].split('_')[-1]
''' '''
与云服务器连接先判断当前json是否已在云服务器上如果在则直接调用 与云服务器连接先判断当前json是否已在云服务器上如果在则直接调用
节省调用API的时间和资费否则调用API获得答案并将答案存入云服务器 节省调用API的时间和资费否则调用API获得答案并将答案存入云服务器
@ -81,8 +73,8 @@ def load_api_key() -> str:
向GPT提问的格式promot + 参数模板化的问题 向GPT提问的格式promot + 参数模板化的问题
''' '''
promot1 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题将由三个部分组成,第一部分是问题的描述,第二部分是问题的需求,第三部分是问题的代码,我需要你按照我的模板编写代码,使用的代码语言是{language}。并且你返回的代码应当是带有注释的。再次注意,请返回完整的,格式正确的,可读的代码!' #promot1 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题将由三个部分组成,第一部分是问题的描述,第二部分是问题的需求,第三部分是问题的代码,我需要你按照我的模板编写代码,使用的代码语言是{language}。并且你返回的代码应当是带有注释的。再次注意,请返回完整的,格式正确的,可读的代码!'
promot2 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题会有两个部分组成,第一部分是问题的描述,第二部分是你需要补全或者完善的代码。你需要阅读,理解我的问题描述,然后补全或者完善代码,使用的代码语言是{language}。再次注意,请返回完整的,格式正确的,输入由用户给出的,可读的代码!' #promot2 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题会有两个部分组成,第一部分是问题的描述,第二部分是你需要补全或者完善的代码。你需要阅读,理解我的问题描述,然后补全或者完善代码,使用的代码语言是{language}。再次注意,请返回完整的,格式正确的,输入由用户给出的,可读的代码!'
#构造问题模板 #构造问题模板
#遍历字典,获得每一关的参数,构造请求,获得答案 #遍历字典,获得每一关的参数,构造请求,获得答案
#使用异步函数提升效率 #使用异步函数提升效率
@ -102,9 +94,14 @@ def get_shixunanswer_from_api(jsonfile:dict,client:AsyncOpenAI,promot:str) -> di
client:异步客户端 client:异步客户端
promot:问题模板 promot:问题模板
''' '''
j_shixun = get_shixunjson(os.getcwd())
j_programming = get_programmingjson(os.getcwd())
if j_shixun == []:
language = get_programmingjson(os.getcwd())[0].split('.')[0].split('_')[-1]
else:
language = get_shixunjson(os.getcwd())[0].split('.')[0].split('_')[-1]
data = jsonfile data = jsonfile
client = client promot1 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题将由三个部分组成,第一部分是问题的描述,第二部分是问题的需求,第三部分是问题的代码,我需要你按照我的模板编写代码,使用的代码语言是{language}。并且你返回的代码应当是带有注释的。再次注意,请返回完整的,格式正确的,可读的代码!'
promot = promot
# 异步函数来获取答案 # 异步函数来获取答案
async def get_answer(key,value) -> str: async def get_answer(key,value) -> str:
''' '''
@ -153,10 +150,16 @@ def get_programming_answer_from_api(jsonfile:list,client:AsyncOpenAI,promot:str)
client:异步客户端 client:异步客户端
promot:问题模板 promot:问题模板
''' '''
j_shixun = get_shixunjson(os.getcwd())
j_programming = get_programmingjson(os.getcwd())
if j_shixun == []:
language = get_programmingjson(os.getcwd())[0].split('.')[0].split('_')[-1]
else:
language = get_shixunjson(os.getcwd())[0].split('.')[0].split('_')[-1]
data = jsonfile data = jsonfile
promot2 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题会有两个部分组成,第一部分是问题的描述,第二部分是你需要补全或者完善的代码。你需要阅读,理解我的问题描述,然后补全或者完善代码,使用的代码语言是{language}。再次注意,请返回完整的,格式正确的,输入由用户给出的,可读的代码!'
# 异步函数来获取答案 # 异步函数来获取答案
async def get_answer(value:dict) -> str: async def get_answer(value:dict) -> str:
value = value
pro_id = value['id'] pro_id = value['id']
# code 是base64编码的字符串需要解码 # code 是base64编码的字符串需要解码
des,code = value['describe'],base64.b64decode(value['code']).decode('utf-8') des,code = value['describe'],base64.b64decode(value['code']).decode('utf-8')

@ -15,7 +15,7 @@ print('处理api相关中...')
download('apis.json') download('apis.json')
print('处理完成!') print('处理完成!')
from get_params import get_parameters,get_parameters_of_programming,is_practice from get_params import get_parameters,get_parameters_of_programming,is_practice
from get_answer import get_shixunanswer_from_api,get_programming_answer_from_api,promot1,promot2,client,rewrite_programming_json,rewrite_shixun_json from get_answer import get_shixunanswer_from_api,get_programming_answer_from_api,client,rewrite_programming_json,rewrite_shixun_json
from login_ui import show_login,show_image,MyApp from login_ui import show_login,show_image,MyApp
from trans_to_txt import transToTxt,transToTxt_programming,get_programmingjson,get_shixunjson from trans_to_txt import transToTxt,transToTxt_programming,get_programmingjson,get_shixunjson
import json import json
@ -26,7 +26,8 @@ finished = False
# 调用login_ui获得用户输入的用户名、密码和实训网址 # 调用login_ui获得用户输入的用户名、密码和实训网址
show_image() show_image()
show_login() show_login()
promot1 = '实训'
promot2 = '编程'
# 检查userinfo.json文件是否存在存在则程序继续 # 检查userinfo.json文件是否存在存在则程序继续
assert os.path.exists('userinfo.json'), 'userinfo.json文件不存在,请检查' assert os.path.exists('userinfo.json'), 'userinfo.json文件不存在,请检查'

@ -1 +1,6 @@
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "someElementID"))) # with open(name,'r',encoding='utf-8') as f:
# data = json.load(f)
# for i,j in data.items():
# if 'answer' not in j.keys() or j['answer'] == '':
# # 断言查询结果并抛出异常
# assert False,'答案为空,不予上传'
Loading…
Cancel
Save