From d5578d7be120eb466ca4f8d94eb0b0341eaa86cc Mon Sep 17 00:00:00 2001 From: Marshal Date: Tue, 19 Nov 2019 17:31:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=B0=D0=BF=D1=87=D0=B8.=20#140?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yandex_music.utils.captcha_response.rst | 7 +++ docs/source/yandex_music.utils.rst | 1 + yandex_music/utils/captcha_response.py | 45 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 docs/source/yandex_music.utils.captcha_response.rst 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