diff --git a/cloud.py b/cloud.py index 9d696e1..1a38eaa 100644 --- a/cloud.py +++ b/cloud.py @@ -28,14 +28,7 @@ def download(name): # 上传函数,用于获得答案后上传到云端,此步骤在获得答案后调用 # (to do)如果用户将答案认证为正确,则将本地json中的verified参数改为True后再上传并覆盖云端文件 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): bucket.put_object_from_file(name, name) @@ -49,4 +42,4 @@ if __name__ == '__main__': # print(is_exist('18503.json')) #download('18503.json') #检查云端所有文件 - print([i for i in bucket.list_objects()]) \ No newline at end of file + upload('pro_233226_Python.json') \ No newline at end of file diff --git a/get_answer.py b/get_answer.py index 7a65b2b..e7292aa 100644 --- a/get_answer.py +++ b/get_answer.py @@ -32,14 +32,6 @@ def get_programmingjson(file:str) -> list: if i.endswith('.json') and i.startswith('pro'): jsonfiles.append(i) 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是否已在云服务器上,如果在,则直接调用, 节省调用API的时间和资费,否则,调用API,获得答案,并将答案存入云服务器 @@ -81,8 +73,8 @@ def load_api_key() -> str: 向GPT提问的格式:promot + 参数模板化的问题 ''' -promot1 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题将由三个部分组成,第一部分是问题的描述,第二部分是问题的需求,第三部分是问题的代码,我需要你按照我的模板编写代码,使用的代码语言是{language}。并且你返回的代码应当是带有注释的。再次注意,请返回完整的,格式正确的,可读的代码!' -promot2 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题会有两个部分组成,第一部分是问题的描述,第二部分是你需要补全或者完善的代码。你需要阅读,理解我的问题描述,然后补全或者完善代码,使用的代码语言是{language}。再次注意,请返回完整的,格式正确的,输入由用户给出的,可读的代码!' +#promot1 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题将由三个部分组成,第一部分是问题的描述,第二部分是问题的需求,第三部分是问题的代码,我需要你按照我的模板编写代码,使用的代码语言是{language}。并且你返回的代码应当是带有注释的。再次注意,请返回完整的,格式正确的,可读的代码!' +#promot2 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题会有两个部分组成,第一部分是问题的描述,第二部分是你需要补全或者完善的代码。你需要阅读,理解我的问题描述,然后补全或者完善代码,使用的代码语言是{language}。再次注意,请返回完整的,格式正确的,输入由用户给出的,可读的代码!' #构造问题模板 #遍历字典,获得每一关的参数,构造请求,获得答案 #使用异步函数提升效率 @@ -102,9 +94,14 @@ def get_shixunanswer_from_api(jsonfile:dict,client:AsyncOpenAI,promot:str) -> di client:异步客户端 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 - client = client - promot = promot + promot1 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题将由三个部分组成,第一部分是问题的描述,第二部分是问题的需求,第三部分是问题的代码,我需要你按照我的模板编写代码,使用的代码语言是{language}。并且你返回的代码应当是带有注释的。再次注意,请返回完整的,格式正确的,可读的代码!' # 异步函数来获取答案 async def get_answer(key,value) -> str: ''' @@ -153,10 +150,16 @@ def get_programming_answer_from_api(jsonfile:list,client:AsyncOpenAI,promot:str) client:异步客户端 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 + promot2 = f'现在,我想让你扮演一个资深而经验丰富的程序员来解一个问题,我的问题会有两个部分组成,第一部分是问题的描述,第二部分是你需要补全或者完善的代码。你需要阅读,理解我的问题描述,然后补全或者完善代码,使用的代码语言是{language}。再次注意,请返回完整的,格式正确的,输入由用户给出的,可读的代码!' # 异步函数来获取答案 async def get_answer(value:dict) -> str: - value = value pro_id = value['id'] # code 是base64编码的字符串,需要解码 des,code = value['describe'],base64.b64decode(value['code']).decode('utf-8') diff --git a/main.py b/main.py index d38cead..f8c7b3b 100644 --- a/main.py +++ b/main.py @@ -15,7 +15,7 @@ print('处理api相关中...') download('apis.json') print('处理完成!') 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 trans_to_txt import transToTxt,transToTxt_programming,get_programmingjson,get_shixunjson import json @@ -26,7 +26,8 @@ finished = False # 调用login_ui获得用户输入的用户名、密码和实训网址 show_image() show_login() - +promot1 = '实训' +promot2 = '编程' # 检查userinfo.json文件是否存在,存在,则程序继续 assert os.path.exists('userinfo.json'), 'userinfo.json文件不存在,请检查' diff --git a/tempCodeRunnerFile.py b/tempCodeRunnerFile.py index 32752dc..bfdd6cf 100644 --- a/tempCodeRunnerFile.py +++ b/tempCodeRunnerFile.py @@ -1 +1,6 @@ -WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "someElementID"))) \ No newline at end of file + # 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,'答案为空,不予上传' \ No newline at end of file