Skip to content

Instantly share code, notes, and snippets.

@Mukundan314
Created December 11, 2019 13:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Mukundan314/beccc7c8cf6a972c753c8df594578820 to your computer and use it in GitHub Desktop.
Save Mukundan314/beccc7c8cf6a972c753c8df594578820 to your computer and use it in GitHub Desktop.

Dependencies

Usage

usage: codeforces-register.py [-h] [-e EMAIL] [-p PASSWORD] [-a] contest_id

positional arguments:
  contest_id            Id of contest

optional arguments:
  -h, --help            show this help message and exit
  -e EMAIL, ---email EMAIL
                        email address of codeforces account
  -p PASSWORD, --password PASSWORD
                        password of codeforces account
  -a, --agree           automatically agree to contest terms

if email and password are not provided they are prompted in the commandline

Examples

$ python codeforces-register.py 1272
$ python codeforces-register.py -a 1272
$ python codeforces-register.py -e mukundan314@gmail.com 1272
$ python codeforces-register.py -e mukundan314@gmail.com -p password 1272
import argparse
import getpass
import sys
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument("contest_id", type=int, help="Id of contest")
parser.add_argument("-e", "---email", type=str, help="email address of codeforces account")
parser.add_argument("-p", "--password", type=str, help="password of codeforces account")
parser.add_argument("-a", "--agree", action="store_true", help="automatically agree to contest terms")
args = parser.parse_args(argv[1:])
if (args.password is not None) and (args.email is None):
print("password provided but email not provided", file=sys.stderr)
exit(1)
email = args.email
if email is None:
email = input("Email: ")
password = args.password
if password is None:
password = getpass.getpass()
browser = webdriver.Firefox()
wait = webdriver.support.wait.WebDriverWait(browser, 5)
browser.get("https://codeforces.com/contestRegistration/{}".format(args.contest_id))
browser.find_element_by_name("handleOrEmail").send_keys(email)
browser.find_element_by_name("password").send_keys(password)
browser.find_element_by_class_name("submit").click()
wait.until(lambda driver: driver.current_url.startswith("https://codeforces.com/contestRegistration"))
if args.agree:
browser.find_element_by_class_name("submit").click()
if __name__ == "__main__":
main(sys.argv)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment