import requests
from time import sleep
from selenium import webdriver
from tqdm import tqdm
s = requests.Session()

def get_sol_upvotes(user):
    url = f"https://cryptohack.org/user/{user}/"
    sol_upvotes = s.get(url).text.split("Solution Upvotes")[1][6:].split("<")[0]
    return int(sol_upvotes)

dic = {}
for p in tqdm(range(1, 201)):
    driver = webdriver.Firefox()
    driver.get("https://cryptohack.org/scoreboard/")
    js = f'openPage({p}, "any")'
    driver.execute_script(js)
    sleep(5)
    html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
    for i, line in enumerate(html.split('name"><a href="/user/')):
        if i > 10:
            user = line.split('">')[0]
            upvotes = get_sol_upvotes(user)
            if upvotes > 10:
                dic[user] = upvotes
    driver.close()
           
for i, (user, upvotes) in enumerate({ key: value for key, value in sorted(dic.items(), key=lambda item: item[1])[::-1] }.items()):
    print(f"{i+1}.", upvotes, user)