From 34c4d184028641d6759ee64f45508ae173a9e246 Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:44:51 +0800 Subject: [PATCH 01/80] Add files via upload From e73b23c70110f1e7ee76ce1ab12b76e509c669ae Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:46:44 +0800 Subject: [PATCH 02/80] Delete oj.py --- oj.py | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100755 oj.py diff --git a/oj.py b/oj.py deleted file mode 100755 index 1783580..0000000 --- a/oj.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/opt/csw/bin/python2.7 - -import argparse - -from commands import auth, get_assign, get_problem, status, submit - -parser = argparse.ArgumentParser( - prog="oj", - description="CLI tool that helping you access CP Online Judge", -) -subparsers = parser.add_subparsers(dest="subcmd") -parser_login = subparsers.add_parser( - "login", description="Login your account to CP Online Judge" -) -parser_login.set_defaults(func=auth) - -parser_get_assign = subparsers.add_parser( - "get_assign", description="Get assignment/exercise from contest" -) -parser_get_assign.add_argument("assign_no", type=str, help="assignment number") -parser_get_assign.set_defaults(func=get_assign) - -parser_get_problem = subparsers.add_parser( - "get_problem", description="Get problem from public problem" -) -parser_get_problem.add_argument("problem_id", type=str, help="problem display ID") - -parser_submit = subparsers.add_parser( - "submit", description="Submit and grade your code" -) -parser_submit.add_argument("assign_no", type=str, help="assignment number") -parser_submit.add_argument("code_file", type=str, help="file of your codes") - -parser_status = subparsers.add_parser("status", description="Get submission status") -parser_status.add_argument("submission_id", type=str, help="the submission id") - -args = parser.parse_args() -cmd_to_func = { - "login": auth, - "get_assign": lambda: get_assign(args.assign_no), - "get_problem": lambda: get_problem(args.problem_id), - "submit": lambda: submit(args.assign_no, args.code_file), - "status": lambda: status(args.submission_id), -} - - -cmd_to_func[args.subcmd]() From dc1270bf4e45b9b0fc5b3e28978cca18d116d1f8 Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:47:15 +0800 Subject: [PATCH 03/80] Adding Update function --- oj.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 oj.py diff --git a/oj.py b/oj.py new file mode 100644 index 0000000..1783580 --- /dev/null +++ b/oj.py @@ -0,0 +1,47 @@ +#!/opt/csw/bin/python2.7 + +import argparse + +from commands import auth, get_assign, get_problem, status, submit + +parser = argparse.ArgumentParser( + prog="oj", + description="CLI tool that helping you access CP Online Judge", +) +subparsers = parser.add_subparsers(dest="subcmd") +parser_login = subparsers.add_parser( + "login", description="Login your account to CP Online Judge" +) +parser_login.set_defaults(func=auth) + +parser_get_assign = subparsers.add_parser( + "get_assign", description="Get assignment/exercise from contest" +) +parser_get_assign.add_argument("assign_no", type=str, help="assignment number") +parser_get_assign.set_defaults(func=get_assign) + +parser_get_problem = subparsers.add_parser( + "get_problem", description="Get problem from public problem" +) +parser_get_problem.add_argument("problem_id", type=str, help="problem display ID") + +parser_submit = subparsers.add_parser( + "submit", description="Submit and grade your code" +) +parser_submit.add_argument("assign_no", type=str, help="assignment number") +parser_submit.add_argument("code_file", type=str, help="file of your codes") + +parser_status = subparsers.add_parser("status", description="Get submission status") +parser_status.add_argument("submission_id", type=str, help="the submission id") + +args = parser.parse_args() +cmd_to_func = { + "login": auth, + "get_assign": lambda: get_assign(args.assign_no), + "get_problem": lambda: get_problem(args.problem_id), + "submit": lambda: submit(args.assign_no, args.code_file), + "status": lambda: status(args.submission_id), +} + + +cmd_to_func[args.subcmd]() From 739832b3714a01b429e04c701e924d4f573851af Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:47:35 +0800 Subject: [PATCH 04/80] Delete __init__.py --- commands/__init__.py | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 commands/__init__.py diff --git a/commands/__init__.py b/commands/__init__.py deleted file mode 100644 index c4a42c8..0000000 --- a/commands/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from .get_assign import get_assign -from .get_problem import get_problem -from .login import auth -from .status import status -from .submit import submit - -__all__ = ["auth", "get_assign", "submit", "get_problem", "status"] From 5eb71af6e8d9f7516260a689a0ef847cd5c2e541 Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:48:01 +0800 Subject: [PATCH 05/80] Add Update function --- commands/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 commands/__init__.py diff --git a/commands/__init__.py b/commands/__init__.py new file mode 100644 index 0000000..c4a42c8 --- /dev/null +++ b/commands/__init__.py @@ -0,0 +1,7 @@ +from .get_assign import get_assign +from .get_problem import get_problem +from .login import auth +from .status import status +from .submit import submit + +__all__ = ["auth", "get_assign", "submit", "get_problem", "status"] From 0eef0371fdf85393c15090514a49b33b30fc5283 Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:50:12 +0800 Subject: [PATCH 06/80] Delete oj.py --- oj.py | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 oj.py diff --git a/oj.py b/oj.py deleted file mode 100644 index 1783580..0000000 --- a/oj.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/opt/csw/bin/python2.7 - -import argparse - -from commands import auth, get_assign, get_problem, status, submit - -parser = argparse.ArgumentParser( - prog="oj", - description="CLI tool that helping you access CP Online Judge", -) -subparsers = parser.add_subparsers(dest="subcmd") -parser_login = subparsers.add_parser( - "login", description="Login your account to CP Online Judge" -) -parser_login.set_defaults(func=auth) - -parser_get_assign = subparsers.add_parser( - "get_assign", description="Get assignment/exercise from contest" -) -parser_get_assign.add_argument("assign_no", type=str, help="assignment number") -parser_get_assign.set_defaults(func=get_assign) - -parser_get_problem = subparsers.add_parser( - "get_problem", description="Get problem from public problem" -) -parser_get_problem.add_argument("problem_id", type=str, help="problem display ID") - -parser_submit = subparsers.add_parser( - "submit", description="Submit and grade your code" -) -parser_submit.add_argument("assign_no", type=str, help="assignment number") -parser_submit.add_argument("code_file", type=str, help="file of your codes") - -parser_status = subparsers.add_parser("status", description="Get submission status") -parser_status.add_argument("submission_id", type=str, help="the submission id") - -args = parser.parse_args() -cmd_to_func = { - "login": auth, - "get_assign": lambda: get_assign(args.assign_no), - "get_problem": lambda: get_problem(args.problem_id), - "submit": lambda: submit(args.assign_no, args.code_file), - "status": lambda: status(args.submission_id), -} - - -cmd_to_func[args.subcmd]() From 28e78f9cbe8cd4f8ea96eddc539f25ca580300cb Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:50:49 +0800 Subject: [PATCH 07/80] add update function --- oj.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 oj.py diff --git a/oj.py b/oj.py new file mode 100644 index 0000000..adbc78b --- /dev/null +++ b/oj.py @@ -0,0 +1,53 @@ +#!/usr/bin/python2 + +import argparse + +from commands import auth, get_assign, get_problem, status, submit, update_map + +parser = argparse.ArgumentParser( + prog="oj", + description="CLI tool that helping you access CP Online Judge", +) +subparsers = parser.add_subparsers(dest="subcmd") +parser_login = subparsers.add_parser( + "login", description="Login your account to CP Online Judge" +) +parser_login.set_defaults(func=auth) + +parser_update = subparsers.add_parser( + "update", description="Update your Assign and Exercise Homework." +) +parser_update.set_defaults(func=update_map) + +parser_get_assign = subparsers.add_parser( + "get_assign", description="Get assignment/exercise from contest" +) +parser_get_assign.add_argument("assign_no", type=str, help="assignment number") +parser_get_assign.set_defaults(func=get_assign) + +parser_get_problem = subparsers.add_parser( + "get_problem", description="Get problem from public problem" +) +parser_get_problem.add_argument("problem_id", type=str, help="problem display ID") + +parser_submit = subparsers.add_parser( + "submit", description="Submit and grade your code" +) +parser_submit.add_argument("assign_no", type=str, help="assignment number") +parser_submit.add_argument("code_file", type=str, help="file of your codes") + +parser_status = subparsers.add_parser("status", description="Get submission status") +parser_status.add_argument("submission_id", type=str, help="the submission id") + +args = parser.parse_args() +cmd_to_func = { + "login": auth, + "update": update_map, + "get_assign": lambda: get_assign(args.assign_no), + "get_problem": lambda: get_problem(args.problem_id), + "submit": lambda: submit(args.assign_no, args.code_file), + "status": lambda: status(args.submission_id), +} + + +cmd_to_func[args.subcmd]() From 8e6a7c49a7655db9101770f5bf15a6161b54a92f Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:51:02 +0800 Subject: [PATCH 08/80] Delete __init__.py --- commands/__init__.py | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 commands/__init__.py diff --git a/commands/__init__.py b/commands/__init__.py deleted file mode 100644 index c4a42c8..0000000 --- a/commands/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from .get_assign import get_assign -from .get_problem import get_problem -from .login import auth -from .status import status -from .submit import submit - -__all__ = ["auth", "get_assign", "submit", "get_problem", "status"] From 2f04c9934fbf868d19710e2be745807a86ee60f0 Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:51:18 +0800 Subject: [PATCH 09/80] add update function --- commands/__init__.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 commands/__init__.py diff --git a/commands/__init__.py b/commands/__init__.py new file mode 100644 index 0000000..83b75e9 --- /dev/null +++ b/commands/__init__.py @@ -0,0 +1,8 @@ +from .get_assign import get_assign +from .get_problem import get_problem +from .login import auth +from .status import status +from .submit import submit +from .update import update_map + +__all__ = ["auth", "get_assign", "submit", "get_problem", "status", "update_map"] From 64a014b1beca54cd8b28d29a7638467a3890095b Mon Sep 17 00:00:00 2001 From: andyjjrt <60731530+andyjjrt@users.noreply.github.com> Date: Mon, 30 Nov 2020 02:51:52 +0800 Subject: [PATCH 10/80] add update function --- commands/update.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 commands/update.py diff --git a/commands/update.py b/commands/update.py new file mode 100644 index 0000000..54d65ca --- /dev/null +++ b/commands/update.py @@ -0,0 +1,40 @@ +import json +import os +#import requests +from getpass import getpass + +from constants import COOKIES_DIR +from constants import ASSIGNMENT_MAPPING_PATH +from util.common import get_csrf_token +from util.curl import curl + +def update_map(): + endpoint = "contests?offsets=0&limit=100&status=0" + payload = { + "offsets":0, + "limit":100, + "status":0 + } + inputstr = '{' + result = json.loads(curl("get", payload=payload, endpoint=endpoint, use_x_csrf_token=True)) + for i in range(0,len(result['data']['results'])): + contestid = result['data']['results'][i]['id'] + payload = { + "contest_id" : str(contestid) + } + endpoint = "contest/problem?contest_id=" + str(contestid) + result2 = json.loads(curl("get", payload=payload, endpoint=endpoint, use_x_csrf_token=True)) + q_string = result2["data"][0]["_id"] + _pid = q_string.split()[0] + "+" + q_string.split()[1] + print("Found HomeWork: " + q_string.split()[1]) + if i != 0: + inputstr += ',' + inputstr += '"' + str(q_string.split()[1])+'":{"contest_id":' + str(contestid) + ',"contest_problem_id":"' + str(_pid)+ '","problem_id":' + str(result2["data"][0]["id"]) + '}' + inputstr += '}' + f = open(ASSIGNMENT_MAPPING_PATH,'w') + f.write(inputstr) + f.close + print("Updated successfully!") + + + From 25587209f29aae7b186998b088ae8fbdc86dd19f Mon Sep 17 00:00:00 2001 From: andyjjrt Date: Mon, 30 Nov 2020 11:30:42 +0000 Subject: [PATCH 11/80] Add rank,update,and status fubcs --- README.md | 26 ++++++++++ commands/__init__.py | 3 +- commands/contest.py | 117 +++++++++++++++++++++++++++++++++++++++++++ commands/submit.py | 9 +++- commands/update.py | 11 ++-- oj.py | 18 +++++-- 6 files changed, 170 insertions(+), 14 deletions(-) create mode 100755 commands/contest.py mode change 100644 => 100755 oj.py diff --git a/README.md b/README.md index 53a1665..eecb1db 100644 --- a/README.md +++ b/README.md @@ -62,3 +62,29 @@ code_file is the path to your script. `oj` will read the file then submit this a $ oj submit hw2 hw2.c $ oj submit ex3 ../ex3.c ``` + + +### `oj contest ` +### About +Use `oj contest