from flask import Flask, request
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time
import requests
import base64
from anticaptchaofficial.imagecaptcha import *
import os
import sys
import re
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json

# Flask torna o script acessivel na web como pagina
app = Flask(__name__)

@app.route("/")
def home():

    # Inicializa o navegador (neste caso, o Chrome)
    options = Options()
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

    # Abre a página web desejada
    driver.get("https://sucief-sincad-web.fazenda.rj.gov.br/sincad-web/index.jsf")

    time.sleep(3) # Pause for 1 seconds

    search_input = driver.find_element(By.ID, "formulario:txt"+request.args.get('argumento2', ''))
    # 2. Escrever o texto no campo de input
    search_input.send_keys(request.args.get('argumento1', ''))

    # Espera o elemento carregar
    image_element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "Captcha_CaptchaImage"))
    )
    image_element.screenshot(request.args.get('argumento1', '')+".file")

    solver = imagecaptcha()
    solver.set_verbose(1)
    solver.set_key("09bc5c186912bc03bef76a434eb0a97b")
    captcha_text = solver.solve_and_return_solution(request.args.get('argumento1', '')+".file")
    if captcha_text != 0:
        print("captcha text "+captcha_text)
    else:
        print("task finished with error "+solver.error_code)

    os.remove(request.args.get('argumento1', '')+".file")

    search_input = driver.find_element(By.ID, "formulario:captchaText")
    search_input.send_keys(captcha_text)

    search_button = driver.find_element(By.ID, "formulario:btnPesquisar")
    search_button.click()

    time.sleep(3) # Pause for 1 seconds

   # 3. Obter o HTML completo
    html_completo = driver.page_source

    # 4. Imprimir ou usar o HTML
    print(html_completo)

    # fecha o navegador
    driver.quit()

    return html_completo

if __name__ == "__main__":
    app.run(host="165.232.158.61", port=9002)
    #aapp.run(host="127.0.0.1")