add support to work directly with base64 image
This commit is contained in:
parent
2e9e7d4dbf
commit
e1f0dac496
|
@ -92,27 +92,31 @@ class ImageToTextTask:
|
||||||
|
|
||||||
return captcha_id
|
return captcha_id
|
||||||
|
|
||||||
def read_captcha_image_file(self, content):
|
def read_captcha_image_file(self, content, content_type="file"):
|
||||||
"""
|
"""
|
||||||
Функция отвечает за чтение уже сохранённого файла
|
Функция отвечает за чтение уже сохранённого файла
|
||||||
:param content: Параметр строка-путь указывающий на изображение капчи для отправки её на сервер
|
:param content: Параметр строка-путь указывающий на изображение капчи для отправки её на сервер
|
||||||
:return: Возвращает ID капчи
|
:return: Возвращает ID капчи
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
with open(content, 'rb') as captcha_image:
|
if content_type == "file":
|
||||||
# Добавляем в пайлоад картинку и отправляем
|
with open(content, 'rb') as captcha_image:
|
||||||
self.task_payload['task'].update({"body": base64.b64encode(captcha_image.read()).decode('utf-8')})
|
# Добавляем в пайлоад картинку и отправляем
|
||||||
# Отправляем на антикапча изображение капчи и другие парметры,
|
self.task_payload['task'].update({"body": base64.b64encode(captcha_image.read()).decode('utf-8')})
|
||||||
# в результате получаем JSON ответ содержащий номер решаемой капчи
|
elif content_type == "base64":
|
||||||
captcha_id = requests.post(create_task_url, json=self.task_payload).json()
|
self.task_payload["task"].update({"body": content.decode('utf-8')})
|
||||||
|
else:
|
||||||
|
raise Exception
|
||||||
|
# Отправляем на антикапча изображение капчи и другие парметры,
|
||||||
|
# в результате получаем JSON ответ содержащий номер решаемой капчи
|
||||||
|
captcha_id = requests.post(create_task_url, json=self.task_payload).json()
|
||||||
except IOError:
|
except IOError:
|
||||||
raise ReadError()
|
raise ReadError()
|
||||||
|
|
||||||
return captcha_id
|
return captcha_id
|
||||||
|
|
||||||
|
|
||||||
# Работа с капчёй
|
# Работа с капчёй
|
||||||
def captcha_handler(self, captcha_link = None, captcha_file = None, **kwargs):
|
def captcha_handler(self, captcha_link=None, captcha_file=None, captcha_base64=None, **kwargs):
|
||||||
'''
|
'''
|
||||||
Метод получает от вас ссылку на изображение, скачивает его, отправляет изображение на сервер
|
Метод получает от вас ссылку на изображение, скачивает его, отправляет изображение на сервер
|
||||||
RuCaptcha, дожидается решения капчи и вовзращает вам результат
|
RuCaptcha, дожидается решения капчи и вовзращает вам результат
|
||||||
|
@ -121,7 +125,9 @@ class ImageToTextTask:
|
||||||
:return: Возвращает весь ответ сервера JSON-строкой.
|
:return: Возвращает весь ответ сервера JSON-строкой.
|
||||||
'''
|
'''
|
||||||
if captcha_file:
|
if captcha_file:
|
||||||
captcha_id = self.read_captcha_image_file(captcha_file)
|
captcha_id = self.read_captcha_image_file(captcha_file, content_type="file")
|
||||||
|
elif captcha_base64:
|
||||||
|
captcha_id = self.read_captcha_image_file(captcha_base64, content_type="base64")
|
||||||
elif captcha_link:
|
elif captcha_link:
|
||||||
content = requests.get(captcha_link, **kwargs).content
|
content = requests.get(captcha_link, **kwargs).content
|
||||||
# согласно значения переданного параметра выбираем функцию для сохранения изображения
|
# согласно значения переданного параметра выбираем функцию для сохранения изображения
|
||||||
|
|
Loading…
Reference in New Issue