|
import requests
|
|
import re
|
|
import time
|
|
def submit(payload) :
|
|
|
|
url = "http://jf.shuishan.net.cn/api/submission"
|
|
payload = payload
|
|
headers = {
|
|
'Host': 'jf.shuishan.net.cn',
|
|
'Connection': 'keep-alive',
|
|
'Content-Length': '101',
|
|
'Accept': 'application/json, text/plain, */*',
|
|
'X-CSRFToken': '6eM4EeOzqLJFt6xfkbSMQD1e89qF28Lgg5aPIbB1k7Hvu6UFVzzb2d1u5lQG37p6',
|
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
|
|
'Chrome/88.0.4324.104 Safari/537.36',
|
|
'Content-Type': 'application/json;charset=UTF-8',
|
|
'Origin': 'http://jf.shuishan.net.cn',
|
|
'Referer': 'http://jf.shuishan.net.cn/problem/1-1',
|
|
'Accept-Encoding': 'gzip, deflate',
|
|
'Accept-Language': 'zh-CN,zh;q=0.9',
|
|
'Cookie': '_ga=GA1.3.1580759526.1611565238; _gid=GA1.3.412268444.1611565238; csrftoken=6eM4EeOzqLJFt6xfkbSMQD1e89qF28Lgg5aPIbB1k7Hvu6UFVzzb2d1u5lQG37p6; sessionid=0e47tlihcjyqr3oynpx5pq9xpf7jtqml; _gat=1; sessionid=0e47tlihcjyqr3oynpx5pq9xpf7jtqml'
|
|
}
|
|
|
|
response = requests.request("POST", url, headers=headers, data=payload)
|
|
|
|
## print(response.text)
|
|
|
|
res = response.text
|
|
|
|
submit_id = re.findall(r'"submission_id": "([^"]+)"',res)
|
|
submit_id = submit_id[0]
|
|
with open('submit_id.txt', 'w', encoding='utf-8', newline='') as f: # 设置文件对象
|
|
f.write(submit_id) # 将字符串写入文件中
|
|
f.close()
|
|
|
|
#获取judge信息
|
|
url = "http://jf.shuishan.net.cn/api/submission?id="+str(submit_id)
|
|
#url = "http://jf.shuishan.net.cn/api/submission?id=2610feac243108d927e8760f24b808c6"
|
|
payload={}
|
|
headers = {
|
|
'Host': 'jf.shuishan.net.cn',
|
|
'Connection': 'keep-alive',
|
|
'Accept': 'application/json, text/plain, */*',
|
|
'X-CSRFToken': '6eM4EeOzqLJFt6xfkbSMQD1e89qF28Lgg5aPIbB1k7Hvu6UFVzzb2d1u5lQG37p6',
|
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36',
|
|
'Content-Type': 'application/json;charset=utf-8',
|
|
'Referer': 'http://jf.shuishan.net.cn/problem/1-1',
|
|
'Accept-Encoding': 'gzip, deflate',
|
|
'Accept-Language': 'zh-CN,zh;q=0.9',
|
|
'Cookie': '_ga=GA1.3.1580759526.1611565238; _gid=GA1.3.412268444.1611565238; csrftoken=6eM4EeOzqLJFt6xfkbSMQD1e89qF28Lgg5aPIbB1k7Hvu6UFVzzb2d1u5lQG37p6; sessionid=0e47tlihcjyqr3oynpx5pq9xpf7jtqml; _gat=1; sessionid=0e47tlihcjyqr3oynpx5pq9xpf7jtqml'
|
|
}
|
|
#等待judgeserver出结果
|
|
time.sleep(0.5)
|
|
response = requests.request("GET", url, headers=headers, data=payload)
|
|
|
|
## print(response.text)
|
|
res = response.text
|
|
result_code = re.findall(r'"result": ([^"]+),',res)
|
|
error_code = re.findall(r'"error": ([^"]+),',res)
|
|
result_code = result_code[0]
|
|
error_code = error_code[0]
|
|
## print(result_code)
|
|
## print(error_code)
|
|
|
|
if(error_code != '0' and error_code != "null"):
|
|
print("ERROR_CODE")
|
|
return "ERROR_CODE"
|
|
|
|
elif(result_code == '0'):
|
|
print("ACCEPTED")
|
|
return "ACCEPTED"
|
|
elif(result_code == '1'):
|
|
print("CPU_TIME_LIMIT_EXCEEDED")
|
|
return "CPU_TIME_LIMIT_EXCEEDED"
|
|
elif(result_code == '2'):
|
|
print("REAL_TIME_LIMIT_EXCEEDED")
|
|
return "REAL_TIME_LIMIT_EXCEEDED"
|
|
elif(result_code == '3'):
|
|
print("MEMORY_LIMIT_EXCEEDED")
|
|
return "MEMORY_LIMIT_EXCEEDED"
|
|
elif(result_code == '4'):
|
|
print("RUNTIME_ERROR")
|
|
return "RUNTIME_ERROR"
|
|
elif (result_code == '5'):
|
|
print("SYSTEM_ERROR")
|
|
return "SYSTEM_ERROR"
|
|
else:
|
|
print("WRONG_ANSWER")
|
|
return "WRONG_ANSWER"
|
|
#写入一个输出文件
|
|
|
|
|
|
def submit_handler(code, problem_id, language_type):
|
|
|
|
with open('data.c', 'w', encoding='utf-8', newline='') as f:
|
|
f.write(code)
|
|
f.close()
|
|
file = open('data.c', mode='r', encoding='utf-8', newline='')
|
|
code = file.readlines()
|
|
file.close()
|
|
code = ''.join([i.replace(' ', r'\t').replace('"', r'\"').rstrip() + r'\n' for i in code])
|
|
## print(code)
|
|
# payload="{\"problem_id\":1,\"language\":\"C\",\"code\":\"# include <stdio.h>\\nint main()\\n{\\n\\tint a;\\n\\treturn 0;\\n}\"}"
|
|
# print(payload)
|
|
payload = "{\"problem_id\":" + problem_id + ",\"language\":\"" + language_type + "\",\"code\":\"" + code + "\"}"
|
|
## print(payload)
|
|
|
|
results = submit(payload)
|
|
return results
|
|
|
|
# 输入文件名,题号,语言种类
|
|
# results = submit_handler('1.c','1','C')
|
|
# print(results)
|
|
|
|
|
|
#获取逻辑错误信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|