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]
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]
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