diff --git a/docs/source/yandex_music.utils.captcha_response.rst b/docs/source/yandex_music.utils.captcha_response.rst new file mode 100644 index 0000000..183d0b1 --- /dev/null +++ b/docs/source/yandex_music.utils.captcha_response.rst @@ -0,0 +1,7 @@ +yandex_music.utils.captcha_response.CaptchaResponse +=================================================== + +.. autoclass:: yandex_music.utils.captcha_response.CaptchaResponse + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/yandex_music.utils.rst b/docs/source/yandex_music.utils.rst index 6f89caa..d196cc8 100644 --- a/docs/source/yandex_music.utils.rst +++ b/docs/source/yandex_music.utils.rst @@ -5,4 +5,5 @@ yandex_music.utils.request yandex_music.utils.response + yandex_music.utils.captcha_response yandex_music.utils.difference \ No newline at end of file diff --git a/yandex_music/utils/captcha_response.py b/yandex_music/utils/captcha_response.py index 5e9d3d9..b41feb5 100644 --- a/yandex_music/utils/captcha_response.py +++ b/yandex_music/utils/captcha_response.py @@ -2,6 +2,26 @@ from yandex_music import YandexMusicObject class CaptchaResponse(YandexMusicObject): + """Класс представляющий ответ сервера с запросом на ввод капчи. + + Attributes: + x_captcha_url (:obj:`str`): Ссылка на изображение с капчей. + x_captcha_key (:obj:`str`): Уникальный ключ капчи. + error_description (:obj:`str`): Описание ошибки. + error (:obj:`str`): Код ошибки. + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + + Args: + x_captcha_url (:obj:`str`): Ссылка на изображение с капчей. + x_captcha_key (:obj:`str`): Уникальный ключ капчи. + error_description (:obj:`str`): Описание ошибки. + error (:obj:`str`): Код ошибки. + client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент + Yandex Music. + **kwargs: Произвольные ключевые аргументы полученные от API. + """ + def __init__(self, x_captcha_url, x_captcha_key, @@ -15,9 +35,34 @@ class CaptchaResponse(YandexMusicObject): self.error = error self.client = client + self._id_attrs = (self.x_captcha_key, self.x_captcha_url) + + def download(self, filename=None): + """Загрузка изображения с капчей. + + Args: + filename (:obj:`str`, optional): Путь и(или) название файла вместе с расширением. По умолчанию ключ + капчи и расширение `.gif`. + """ + + if not filename: + filename = f'{self.x_captcha_key}.gif' + + self.client.request.download(self.x_captcha_url, filename) @classmethod def de_json(cls, data, client): + """Десериализация объекта. + + Args: + data (:obj:`dict`): Поля и значения десериализуемого объекта. + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. + + Returns: + :obj:`yandex_music.utils.captcha_response.CaptchaResponse`: Объект класса + :class:`yandex_music.utils.captcha_response.CaptchaResponse`. + """ if not data: return None