Skip to content

TypeError: expected str, bytes or os.PathLike object, not NoneType при передаче bas64 строки в метод rotate #146

Description

@mermyly

При попытке передать изображение капчи в формате 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').

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions