При попытке передать изображение капчи в формате b64-строки в асинхронный метод rotate, библиотека падает с ошибкой: TypeError: expected str, bytes or os.PathLike object, not NoneType.
Причина ошибки:
В методе rotate (класс AsyncSolver) присутствует логическая ошибка при обработке результата работы метода self.get_method().
Если в rotate передается строка, управление переходит в следующий блок:
if isinstance(files, str):
file = await self.get_method(files)
file = file.get('file') # <- Ошибка здесь
result = await self.solve(file=file, method='rotatecaptcha', **kwargs)
return result
Метод get_method(file) успешно определяет, что переданная строка является Base64 (длина > 50, нет точек), и возвращает словарь:
return {'method': 'base64', 'body': file}
Однако метод rotate жестко ожидает в этом словаре ключ 'file' (file = file.get('file')). Так как этого ключа в словаре для Base64 нет, переменная file становится равна None. В дальнейшем этот None передается в self.solve, что приводит к падению aiofiles.open(None, 'rb').
При попытке передать изображение капчи в формате b64-строки в асинхронный метод rotate, библиотека падает с ошибкой: TypeError: expected str, bytes or os.PathLike object, not NoneType.
Причина ошибки:
В методе rotate (класс AsyncSolver) присутствует логическая ошибка при обработке результата работы метода self.get_method().
Если в rotate передается строка, управление переходит в следующий блок:
Метод get_method(file) успешно определяет, что переданная строка является Base64 (длина > 50, нет точек), и возвращает словарь:
return {'method': 'base64', 'body': file}Однако метод rotate жестко ожидает в этом словаре ключ 'file' (file = file.get('file')). Так как этого ключа в словаре для Base64 нет, переменная file становится равна None. В дальнейшем этот None передается в self.solve, что приводит к падению aiofiles.open(None, 'rb').