Newer
Older
#!/usr/bin/env python3
import json
import argparse
from urllib import request, error
# 提交答案服务域名或IP, 将在赛前告知
JUDGE_SERVER = "http://judge.aiops-challenge.com" # 评测服务地址
# 团队ID, 登陆账号后, 选择对应的比赛, 在团队页面中可以获得。如未注明团队ID,结果不计入成绩
TICKET = "TeamID" // 填团队ID信息
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
def submit(data, judge_server=None, ticket=None):
judge_server = judge_server or JUDGE_SERVER
ticket = ticket or TICKET
if not judge_server or not ticket:
missing = ["judge_server" if not judge_server else "", "ticket" if not ticket else ""]
missing = [m for m in missing if m]
print("Required fields must be provided: %s" % ', '.join(missing))
return None
req_data = json.dumps({'data': data}).encode('utf-8')
req = request.Request(judge_server, data=req_data, headers={'ticket': ticket, 'Content-Type': 'application/json'})
try:
with request.urlopen(req) as response:
response_body = response.read().decode('utf-8')
return json.loads(response_body)['submission_id']
except error.HTTPError as e:
msg = e.reason
response_body = e.read().decode('utf-8')
if response_body:
try:
msg = json.loads(response_body)['detail']
except:
pass
print("[Error %s] %s" % (e.code, msg))
except error.URLError as e:
print(e.reason)
return None
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Submit to judge server")
parser.add_argument('result_path', nargs='?', default='result.jsonl', help='Path to the submission file, default is result.jsonl')
parser.add_argument('-s', '--server', help='Judge server URL, if not specified, the global JUDGE_SERVER variable will be used')
parser.add_argument('-k', '--ticket', help='Submission ticket, if not specified, the global TICKET variable will be used')
args = parser.parse_args()
try:
with open(args.result_path, 'r') as file:
data = [json.loads(line.strip()) for line in file if line.strip()]
except Exception as e:
print(e)
exit(1)
submission_id = submit(data, judge_server=args.server, ticket=args.ticket)
if submission_id:
print("Success! Your submission ID is %s." % submission_id)
exit(0)
else:
exit(1)