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

# 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://portalweb.sefaz.rr.gov.br/sintegra/servlet/wp_siate_consultasintegra")

	time.sleep(3) # Pause for 1 seconds

	radio_btn_por_valor = WebDriverWait(driver, 10).until(
	    EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='radio'][value='"+request.args.get('argumento2', '')+"']"))
	)
	radio_btn_por_valor.click()

	search_input = driver.find_element(By.ID, "vDOCUMENTO")
	search_input.send_keys(request.args.get('argumento1', ''))

	time.sleep(1) # Pause for 1 seconds

	elementos_img = driver.find_elements(By.TAG_NAME, 'img') # Encontra todas as imagens

	for img in elementos_img:
	    src = img.get_attribute('src')
	    if re.search(r"Captcha", src):
	    	url = img.get_attribute('src')

	response = requests.get(url)
	# save base64 image to a temporary file
	with open(request.args.get('argumento1', '')+".file", "wb") as file:
	    file.write(response.content)

	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, "_cfield")
	search_input.send_keys(captcha_text)

	search_button = driver.find_element(By.NAME, "BTNCONSULTAR")
	search_button.click()

	time.sleep(3) # Pause for 1 seconds

	body_element = driver.find_element(By.TAG_NAME, "body")
	body_text = body_element.text
	print(body_text)

	# fecha o navegador
	driver.quit()

	return body_text

if __name__ == "__main__":
    app.run(host="165.232.158.61", port=9001)
    #aapp.run(host="127.0.0.1")