def run(self, args): config = conf.read_config() dirname = args.contest_id os.makedirs(os.path.join(dirname, test.TESTCASES_PATH)) info = com.contest_info(dirname, config) if info == []: if args.problems == 0: print( "could not find contest. please put the number of problems with `--problems`" ) os.removedirs(os.path.join(dirname, test.TESTCASES_PATH)) return ExitStatus.FAILURE else: alphabets = [chr(ord("a") + i) for i in range(26)] for i in range(args.problems): c = alphabets[i] filename = "{id}{ext}".format( id=c, ext=config["language"]["filename_ext"]) with open(dirname + "/" + filename, "x") as f: f.write(config["template"]["template"]) else: for p in info: filename = "{id}{ext}".format( id=p, ext=config["language"]["filename_ext"]) with open(dirname + "/" + filename, "x") as f: f.write(config["template"]["template"]) return ExitStatus.SUCCESS
def submitting(problem_id, testing): config = conf.read_config() contest_id = os.path.basename(os.getcwd()) filename = "{id}{ext}".format(id=problem_id, ext=config["language"]["filename_ext"]) if testing: print("testing...", end=" ") testcase = test.read_case(problem_id, contest_id, config) res = test.compare_cases(testcase, problem_id, config) if not res: print(test.RED + "FAILED..." + test.COLORRESET) return ExitStatus.FAILURE else: print(test.GREEN + "SUCCESS!" + test.COLORRESET) with open(filename) as f: codes = f.read() status = com.submit(codes, problem_id, contest_id, config) if status == ExitStatus.SUCCESS: subprocess.run([ "xdg-open", com.ATCODER_ENDPOINT + contest_id + "/submissions/me" ]) return status
def run(self, args): config = conf.read_config() stat = test.compiling(args.problem_id, config) if stat == ExitStatus.SUCCESS: print("[input]") res = subprocess.run([config["language"]["exe_cmd"]], capture_output=True, text=True) print("[output]") print(res.stdout) return ExitStatus.SUCCESS print(test.YELLOW + "RE" + test.COLORRESET) return ExitStatus.FAILURE
def run(self, args): config = conf.read_config() return test.testing(args.problem_id, config)
def run(self, args): if os.path.exists(com.COOKIE_FILE): print("you have already logged in atcoder.") return ExitStatus.UNABLE_TO_EXEC com.new_session(conf.read_config()) return ExitStatus.SUCCESS
import os, sys import pickle import requests from bs4 import BeautifulSoup from uroboros import ExitStatus from urllib import parse import toml, json import getpass import atcodertool.config as conf ATCODER_ENDPOINT = "https://atcoder.jp/contests/" COOKIE_FILE = os.path.expanduser( conf.read_config()["session"]["cookie_file_path"]) LOGIN_URL = "https://atcoder.jp/login" INFO_DIR_PATH = ".atcoder_tool" def new_session(config): session = requests.session() # csrf_token取得 r = session.get(LOGIN_URL) s = BeautifulSoup(r.text, 'lxml') csrf_token = s.find(attrs={'name': 'csrf_token'}).get('value') # パラメータセット if config["session"]["username"] == "": user = input("atcoder username: "******"session"]["username"] = user conf.config_update(config) else: user = config["session"]["username"]