Как решать капчу вручную?

Как сделать так, чтобы когда возникала капча - скрипт, запущенный через поток , останавливался и ждал пока нажму на кнопку, чтобы отправить капчу?

Допустим, в простеньком питоне, я мог сделать такую штуку и в случае возникновения капчи - скрипт останавливался и ждал пока я решу капчу
def authorization(self):
    vk = vk_api.VkApi(token=self.token, captcha_handler=self.captcha_handler) # авторизация

def captcha_handler(self, captcha):
    key = input(f"Введите капчу {captcha.get_url()}: ") # возникла капча и просит ее решить, код при этом останавливается
    return captcha.try_again(key) # отправка капчи

В pyqt5 такое не получается такое провернуть
def authorization(self):
    self.vk = vk_api.VkApi(token=self.token, captcha_handler=self.captcha_handler) # авторизация

def captcha_handler(self, captcha):
    self.terminal.insertPlainText(f"\nВведите капчу {captcha.get_url()}") # выводит ссылку на капчу в определенное окошко 
    self.enter.clicked.connect(self.send)

def send(self, captcha):
    print('vvedeno') # вывод в консоль даже не доходит 
    return captcha.try_again(self.scaptchaenter.text()) # отправляем решенную капчу (не работает)
    # P.s: self.scaptchaenter.text() - получаем текст из определенного поля

Скрипт не останавливается и продолжает спамить капчей(останавливал спам тайм слипом, проблему решало, но капчу не отправляло, при этом другие функции программы работали)
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
LinZZZ
@LinZZZ Автор вопроса
решил добавив флаги и ее проверку в потоке, убрал self.enter.clicked.connect(self.send) из captcha_handler
def authorization(self):
    self.vk = vk_api.VkApi(token=self.token, captcha_handler=self.captcha_handler) # авторизация
    self.myThread = tut_osnova(self.id_item, self.s_terminal, self.vk)
    self.myThread.start()
    self.enter.clicked.connect(self.send)

def captcha_handler(self, captcha):
    self.terminal.insertPlainText(f"\nВведите капчу {captcha.get_url()}") # выводит ссылку на капчу в определенное окошко
    self.captcha = captcha
    self.myThread.flag = False

def send(self):
    print('vvedeno') # вывод в консоль уже доходит 
    self.captcha.try_again(self.scaptchaenter.text()) # отправляем решенную капчу
    # P.s: self.scaptchaenter.text() - получаем текст из определенного поля
    self.myThread.flag = True
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы