Обновление документации

Добавление документации для
    Функции: convert_track_id_to_number, get_sign_request
    Классы: Sign, TrackLyrics, LyricsMajor
    Методы: Client.tracks_lyrics
このコミットが含まれているのは:
Gleb Liutsko 2022-11-14 07:30:29 +00:00 committed by Gleb Liutsko
コミット 742d60d18c
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 10FD4B7D55524D61
12個のファイルの変更111行の追加8行の削除

ファイルの表示

@ -0,0 +1,7 @@
yandex\_music.track.lyrics\_major
=================================
.. automodule:: yandex_music.track.lyrics_major
:members:
:undoc-members:
:show-inheritance:

ファイルの表示

@ -13,9 +13,11 @@ Submodules
:maxdepth: 4
yandex_music.track.licence_text_part
yandex_music.track.lyrics_major
yandex_music.track.major
yandex_music.track.meta_data
yandex_music.track.normalization
yandex_music.track.poetry_lover_match
yandex_music.track.track
yandex_music.track.track_lyrics
yandex_music.track.tracks_similar

ファイルの表示

@ -0,0 +1,7 @@
yandex\_music.track.track\_lyrics
=================================
.. automodule:: yandex_music.track.track_lyrics
:members:
:undoc-members:
:show-inheritance:

ファイルの表示

@ -0,0 +1,7 @@
yandex\_music.utils.convert\_track\_id
======================================
.. automodule:: yandex_music.utils.convert_track_id
:members:
:undoc-members:
:show-inheritance:

ファイルの表示

@ -12,7 +12,9 @@ Submodules
.. toctree::
:maxdepth: 4
yandex_music.utils.convert_track_id
yandex_music.utils.difference
yandex_music.utils.request
yandex_music.utils.request_async
yandex_music.utils.response
yandex_music.utils.sign_request

ファイルの表示

@ -0,0 +1,7 @@
yandex\_music.utils.sign\_request
=================================
.. automodule:: yandex_music.utils.sign_request
:members:
:undoc-members:
:show-inheritance:

ファイルの表示

@ -572,15 +572,21 @@ class Client(YandexMusicObject):
) -> Optional[TrackLyrics]:
"""Получение текста трека.
Note:
Известные значения для аргумента format:
- `LRC` - формат с временными метками.
- `TEXT` - простой текст.
Args:
track_id (:obj:`str` | :obj:`int`): Уникальный идентификатор трека.
format (:obj:`str`): Формат текста.
**kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос).
Returns:
TODO
:obj:`yandex_music.TrackLyrics` | :obj:`None`: Информация о тексте трека.
Raises:
:class:`yandex_music.exceptions.NotFoundError`: Текст у трека отсутствует.
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
"""

ファイルの表示

@ -578,15 +578,21 @@ class ClientAsync(YandexMusicObject):
) -> Optional[TrackLyrics]:
"""Получение текста трека.
Note:
Известные значения для аргумента format:
- `LRC` - формат с временными метками.
- `TEXT` - простой текст.
Args:
track_id (:obj:`str` | :obj:`int`): Уникальный идентификатор трека.
format (:obj:`str`): Формат текста.
**kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос).
Returns:
TODO
:obj:`yandex_music.TrackLyrics` | :obj:`None`: Информация о тексте трека.
Raises:
:class:`yandex_music.exceptions.NotFoundError`: Текст у трека отсутствует.
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
"""

ファイルの表示

@ -10,7 +10,14 @@ if TYPE_CHECKING:
@model
class LyricsMajor(YandexMusicObject):
"""TODO"""
"""Класс, представляющий сервис-источник текстов к трекам.
Args:
id (:obj:`int`): Уникальный идентификатор сервиса.
name (:obj:`str`): Имя сервиса.
pretty_name (:obj:`str`): Человекочитаемое имя сервиса.
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
"""
id: int
name: str
@ -22,6 +29,15 @@ class LyricsMajor(YandexMusicObject):
@classmethod
def de_json(cls, data: dict, client: 'Client') -> Optional['LyricsMajor']:
"""Десериализация объекта.
Args:
data (:obj:`dict`): Поля и значения десериализуемого объекта.
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
Returns:
:obj:`yandex_music.LyricsMajor`: Сервис-источник текстов к трекам.
"""
if not data:
return None

ファイルの表示

@ -10,7 +10,16 @@ if TYPE_CHECKING:
@model
class TrackLyrics(YandexMusicObject):
"""TODO"""
"""Класс, представляющий текст трека.
Attributes:
download_url (:obj:`str`): Ссылка на скачивание текста.
lyric_id (:obj:`int`): Уникальный идентификатор текста.
external_lyric_id (:obj:`str`): Уникальный идентификатор текста на сервисе предоставляющий текст.
writers (:obj:`list` из :obj:`str`): Авторы текста.
major (:obj:`yandex_music.LyricsMajor`): Сервис, откуда был получен текст.
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
"""
download_url: str
lyric_id: int
@ -27,7 +36,15 @@ class TrackLyrics(YandexMusicObject):
@classmethod
def de_json(cls, data: dict, client: 'Client') -> Optional['TrackLyrics']:
"""TODO"""
"""Десериализация объекта.
Args:
data (:obj:`dict`): Поля и значения десериализуемого объекта.
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
Returns:
:obj:`yandex_music.TrackLyrics`: Текст трека.
"""
if not data:
return None

ファイルの表示

@ -2,7 +2,19 @@ from typing import Union
def convert_track_id_to_number(track_id: Union[str, int]) -> int:
"""TODO"""
"""Переобразование идентификатора трека в номерной формат.
Note:
Преобразует ID в формате "{track_id}:{album}" в track_id.
Преобразует ID в формате "{track_id}" в track_id.
Args:
track_id (:obj:`str` | :obj:`int`): Уникальный идентификатора трека.
Returns:
:obj:`int`: Уникальный идентификатора трека в номерном формате.
"""
if isinstance(track_id, str):
track_id = int(track_id.split(':')[0])

ファイルの表示

@ -9,18 +9,32 @@ from yandex_music.utils.convert_track_id import convert_track_id_to_number
DEFAULT_SIGN_KEY = 'p93jhgh689SBReK6ghtw62'
""":obj:`str`: Ключ для подписи из Android приложения."""
@dataclass
class Sign:
"""TODO"""
"""Подпись запроса.
Attributes:
timestamp (:obj:`int`): Время создания подписи.
value (:obj:`str`): Подпись.
"""
timestamp: int
value: str
def get_sign_request(track_id: Union[int, str], key: str = DEFAULT_SIGN_KEY) -> Sign:
"""TODO"""
"""Создает подпись для запроса.
Args:
track_id (:obj:`str` | :obj:`int`): Уникальный идентификатора трека.
key (:obj:`str`, optional): Ключ для подписи.
Returns:
:obj:`Sign`: Подпись.
"""
track_id = convert_track_id_to_number(track_id)
timestamp = int(datetime.datetime.now().timestamp())