async def __read_captcha_image_file(self,
                                        content: bytes,
                                        content_type: str = "file"):
        """
        Функция отвечает за чтение уже сохранённого файла или файла в уодировке base64
        :param content: Параметр строка-путь указывающий на изображение капчи для отправки её на сервер
        :param content_type: Тип переданной переменной. Возможны варианты: `file` и `base64`
        :return: Возвращает ID капчи
        """
        try:
            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")
                    })
            elif content_type == "base64":
                self.task_payload["task"].update({"body": content})
            else:
                raise ValueError(
                    f"\nWrong `content_type` parameter. Valid params: `file` or `base64`."
                    f"\n\tYour param - `{content_type}`")
            # Отправляем на антикапча изображение капчи и другие парметры,
            # в результате получаем JSON ответ содержащий номер решаемой капчи
            async with aiohttp.ClientSession() as session:
                async with session.post(create_task_url,
                                        json=self.task_payload) as resp:
                    captcha_id = await resp.json()
        except (IOError, FileNotFoundError) as err:
            raise ReadError(err)

        return captcha_id
Beispiel #2
0
    async def __read_captcha_image_file(self, content: bytes, content_type: str = 'file'):
        """
        Функция отвечает за чтение уже сохранённого файла или файла в уодировке base64
        :param content: Параметр строка-путь указывающий на изображение капчи для отправки её на сервер
        :param content_type: Тип переданной переменной. Возможны варианты: `file` и `base64`
        :return: Возвращает ID капчи
        """
        try:
            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')})
            elif content_type == "base64":
                self.task_payload["task"].update({"body": content})
            else:
                raise ValueError('\nПередан неверный формат файла.'
                                 f'\n\tВозможные варинты: `file` и `base64`. Вы передали - `{content_type}`'
                                 f'\nWrong `content_type` parameter. Valid params: `file` or `base64`.'
                                 f'\n\tYour param - `{content_type}`')
            # Отправляем на антикапча изображение капчи и другие парметры,
            # в результате получаем JSON ответ содержащий номер решаемой капчи
            captcha_id = requests.post(create_task_url, json = self.task_payload).json()
        except (IOError, FileNotFoundError) as err:
            raise ReadError(err)

        return captcha_id