Exemple #1
0
    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
Exemple #2
0
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
Exemple #3
0
 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
Exemple #4
0
 def run(self, args):
     config = conf.read_config()
     return test.testing(args.problem_id, config)
Exemple #5
0
 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
Exemple #6
0
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"]