Exemplo n.º 1
0
class Parametros(object):
    def __init__(self):
        self.sql = Script()

    def retorna_parametros(self):
        try:
            parametros = self.sql.consulta_parametros()
            resultado = {}

            for parametro in parametros:
                if parametro['tipo_parametro'] == 'site':
                    resultado['site'] = parametro['valor']

                elif parametro['tipo_parametro'] == 'valor_voo':
                    resultado['valor_voo'] = parametro['valor']

                elif parametro['tipo_parametro'] == 'bot_token_telegram':
                    resultado['bot_token_telegram'] = parametro['valor']

                elif parametro['tipo_parametro'] == 'qnt_semanas':
                    resultado['qnt_semanas'] = parametro['valor']

                elif parametro['tipo_parametro'] == 'navegador_handler':
                    resultado['navegador_handler'] = parametro['valor']

            return resultado

        except Exception as exception:
            self.sql.insere_log(exception)
            return
Exemplo n.º 2
0
class Comunicacao(object):
    def __init__(self):
        self.sql = Script()
        self.telegram = Telegram()

    def alerta_voos(self, valor, voos):
        try:
            msg = '--- CONSULTA: {} ---'.format(voos['data_hora'])
            msg += '\n'
            msg += '\n'
            msg += 'Os seguintes voos estão dentro do valor esperado de R${}: '.format(
                valor)
            msg2 = ''
            for voo in voos['lista_voos']:
                if voo['valor'] <= float(valor):
                    result = '\n\n ORIGEM: {} \n DESTINO: {} \n VALOR: {} \n DATA: {} \n DIA DA SEMANA: {} \n ####################### \n'.format(
                        voos['origem'], voos['destino'], voo['valor'],
                        voo['data'], voo['dia_semana'])
                    msg2 += result
            if msg2:
                msg += msg2
                self.telegram.enviar_msg(msg)

        except Exception as exception:
            self.sql.insere_log(exception)
Exemplo n.º 3
0
class Parametros(object):
    def __init__(self):
        self.sql = Script()

    def retorna_parametros(self):
        try:
            parametros = self.sql.consulta_parametros()
            resultado = {}

            for parametro in parametros:
                resultado[parametro['tipo_parametro']] = parametro['valor']

            return resultado

        except Exception as exception:
            logger.exception(exception)
            self.sql.insere_log(exception)
            return
Exemplo n.º 4
0
        msg += 'O valor da passagem para pesquisa é: {}\n'.format(
            parametro['valor_voo'])
        msg += 'A quantidade de semanas que estamos analisando é: {}\n'.format(
            parametro['qnt_semanas'])
        msg += 'O navegar está no modo: {}\n'.format(
            'Não Renderizado' if parametro['qnt_semanas'] ==
            '1' else 'Renderizado')
        return msg

    @bot.message_handler(commands=['parametros'], func=consulta_parametros)
    def echo_all(message):
        bot.reply_to(message, consulta_parametros(message))

    def comandos(message):
        msg = 'Você pode utilizar os seguintes comandos para configurar suas buscas: \n\n'
        msg += '/menorvalor - Esse comando retorna o valor mais baixo da passagem que foi encontrado nas buscas\n\n'
        msg += '/altera "valor" - Esse comando altera o valor da passagem que você deseja ser notificado. \n Ex.: Utilizando /altera 200. Quando encontrarmos alguma passagem abaixo de R$ 200,00, iremos notificá-lo por mensagem\n\n'
        msg += '/log - Esse comando retorna o log do sistema com as informações da última vez que o sistema rodou, e a quantidade de erros gerados até o momento.\n\n'
        msg += '/parametros - Esse comando retorna os paramentros que estão sendo utilizandos nas consultas atuais\n\n'
        return msg

    @bot.message_handler(commands=['help'], func=comandos)
    def echo_all(message):
        bot.reply_to(message, comandos(message))

    bot.polling()

except Exception as exception:
    sql = Script()
    sql.insere_log(exception)
Exemplo n.º 5
0
class Consulta(object):
    def __init__(self, driver):
        self.driver = driver
        self.campo_origem = '//div[@class="purchase-box-header-division division-input division-input-origin"]/div/a/div'
        self.campo_destino = '//div[@class="input-destiny division-input-destiny-city active"]/div/a/span'
        self.botao_compra = 'btn-box-buy'
        self.lista_voos = '//div[@class="sliderDates sliderGoing"]/ul/li'
        self.botao_proxima_semana = "ControlGroupSelect2View_AvailabilityInputSelect2View_LinkButtonNextWeek1"
        self.botao_modal_aviso_data = '//div[@class="carouselDateChangePopup"]/p[@class="btnFecharPopup btCls btClsNew3"]/a[contains(text(), "Fechar")]'
        self.sql = Script()
        self.parametros = Parametros()
        self.parametro = self.parametros.retorna_parametros()

    def informo_origem(self):
        try:
            self.driver.find_element_by_xpath(self.campo_origem).click()
        except Exception as exception:
            img = self.driver.get_screenshot_as_base64()
            self.sql.insere_log(exception, img)

    def informo_destino(self):
        try:
            self.driver.find_element_by_xpath(self.campo_destino).click()
        except Exception as exception:
            img = self.driver.get_screenshot_as_base64()
            self.sql.insere_log(exception, img)

    def pesquisa_voo(self, destino):
        try:
            actions = ActionChains(self.driver)
            actions.send_keys(destino)
            actions.key_down(Keys.ENTER)
            actions.key_up(Keys.ENTER)
            actions.perform()
        except Exception as exception:
            img = self.driver.get_screenshot_as_base64()
            self.sql.insere_log(exception, img)

    def pesquisar(self):
        try:
            self.driver.find_element_by_id(self.botao_compra).click()
        except Exception as exception:
            img = self.driver.get_screenshot_as_base64()
            self.sql.insere_log(exception, img)

    def pega_dados_voo(self):
        try:
            datas = []
            pesquisar = 0
            qnt_semana = self.parametro['qnt_semanas']

            while pesquisar < int(qnt_semana):
                voos = self.driver.find_elements_by_xpath(self.lista_voos)

                for voo in voos:
                    datas.append(voo.text)
                try:
                    self.driver.find_element_by_id(
                        self.botao_proxima_semana).click()
                except Exception as exception:
                    try:
                        self.driver.find_element_by_xpath(
                            self.botao_modal_aviso_data).click()
                        self.driver.find_element_by_id(
                            self.botao_proxima_semana).click()
                    except Exception as exception:
                        img = self.driver.get_screenshot_as_base64()
                        self.sql.insere_log(exception, img)

                pesquisar += 1

            return datas
        except Exception as exception:
            img = self.driver.get_screenshot_as_base64()
            self.sql.insere_log(exception, img)