예제 #1
0
    def submit_source_code(self, contest: Contest, problem: Problem, lang: Union[str, Language], source: str) -> Submission:
        if isinstance(lang, str):
            warnings.warn(
                "Parameter lang as a str object is deprecated. "
                "Please use 'atcodertools.common.language.Language' object instead",
                UserWarning)
            lang_option_pattern = lang
        else:
            lang_option_pattern = lang.submission_lang_pattern

        resp = self._request(contest.get_submit_url())

        soup = BeautifulSoup(resp.text, "html.parser")
        session_id = soup.find("input", attrs={"type": "hidden"}).get("value")
        task_select_area = soup.find(
            'select', attrs={"id": "submit-task-selector"})
        task_field_name = task_select_area.get("name")
        task_number = task_select_area.find(
            "option", text=re.compile('{} -'.format(problem.get_alphabet()))).get("value")
        language_select_area = soup.find(
            'select', attrs={"id": "submit-language-selector-{}".format(task_number)})
        language_field_name = language_select_area.get("name")
        language_number = language_select_area.find(
            "option", text=lang_option_pattern).get("value")
        postdata = {
            "__session": session_id,
            task_field_name: task_number,
            language_field_name: language_number,
            "source_code": source
        }
        resp = self._request(
            contest.get_submit_url(),
            data=postdata,
            method='POST')
        return Submission.make_submissions_from(resp.text)[0]
예제 #2
0
    def submit_source_code(self, contest: Contest, problem: Problem, lang: Union[str, Language], source: str) -> Submission:
        if isinstance(lang, str):
            warnings.warn(
                "Parameter lang as a str object is deprecated. "
                "Please use 'atcodertools.common.language.Language' object instead",
                UserWarning)
            lang_option_pattern = lang
        else:
            lang_option_pattern = lang.submission_lang_pattern

        resp = self._request(contest.get_submit_url())

        soup = BeautifulSoup(resp.text, "html.parser")
        session_id = soup.find("input", attrs={"type": "hidden"}).get("value")
        task_select_area = soup.find(
            'select', attrs={"id": "submit-task-selector"})
        task_field_name = task_select_area.get("name")
        task_number = task_select_area.find(
            "option", text=re.compile('{} -'.format(problem.get_alphabet()))).get("value")
        language_select_area = soup.find(
            'select', attrs={"id": "submit-language-selector-{}".format(task_number)})
        language_field_name = language_select_area.get("name")
        language_number = language_select_area.find(
            "option", text=lang_option_pattern).get("value")
        postdata = {
            "__session": session_id,
            task_field_name: task_number,
            language_field_name: language_number,
            "source_code": source
        }
        resp = self._request(
            contest.get_submit_url(),
            data=postdata,
            method='POST')
        return Submission.make_submissions_from(resp.text)[0]
예제 #3
0
    def submit_source_code(self, contest: Contest, problem: Problem, lang: str,
                           source: str) -> Submission:
        resp = self._request(contest.get_submit_url())

        soup = BeautifulSoup(resp.text, "html.parser")
        session_id = soup.find("input", attrs={"type": "hidden"}).get("value")
        task_select_area = soup.find('select',
                                     attrs={"id": "submit-task-selector"})
        task_field_name = task_select_area.get("name")
        task_number = task_select_area.find(
            "option", text=re.compile('{} -'.format(
                problem.get_alphabet()))).get("value")
        language_select_area = soup.find(
            'select',
            attrs={"id": "submit-language-selector-{}".format(task_number)})
        language_field_name = language_select_area.get("name")
        language_number = language_select_area.find("option",
                                                    text=lang).get("value")
        postdata = {
            "__session": session_id,
            task_field_name: task_number,
            language_field_name: language_number,
            "source_code": source
        }
        resp = self._request(contest.get_submit_url(),
                             data=postdata,
                             method='POST')
        return Submission.make_submissions_from(resp.text)[0]
예제 #4
0
 def download_submission_list(self, contest: Contest) -> List[Submission]:
     submissions = []
     page_num = 1
     while True:
         resp = self._request(contest.get_my_submissions_url(page_num))
         new_submissions = Submission.make_submissions_from(resp.text)
         if len(new_submissions) == 0:
             break
         submissions += new_submissions
         page_num += 1
     return submissions
예제 #5
0
 def download_submission_list(self, contest: Contest) -> List[Submission]:
     submissions = []
     page_num = 1
     while True:
         resp = self._request(contest.get_my_submissions_url(page_num))
         new_submissions = Submission.make_submissions_from(resp.text)
         if len(new_submissions) == 0:
             break
         submissions += new_submissions
         page_num += 1
     return submissions