コミット
78bcb05799
|
@ -446,7 +446,7 @@ class Client(YandexMusicObject):
|
|||
**kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос).
|
||||
|
||||
Returns:
|
||||
:obj:`yandex_music.LandingList`: Список подскастов.
|
||||
:obj:`yandex_music.LandingList`: Список подкастов.
|
||||
|
||||
Raises:
|
||||
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
|
||||
|
@ -1082,7 +1082,7 @@ class Client(YandexMusicObject):
|
|||
|
||||
@log
|
||||
def rotor_account_status(self, *args, **kwargs) -> Optional[Status]:
|
||||
"""Получение статуса пользователя с дополнителньыми полями.
|
||||
"""Получение статуса пользователя с дополнительными полями.
|
||||
|
||||
Note:
|
||||
Данный статус отличается от обычного наличием дополнительных полей, например, `skips_per_hour`.
|
||||
|
@ -1164,12 +1164,12 @@ class Client(YandexMusicObject):
|
|||
*args,
|
||||
**kwargs,
|
||||
) -> bool:
|
||||
"""Отправка ответной реакции на происходящее при прослушивании радио.
|
||||
"""Отправка обратной связи на действия при прослушивании радио.
|
||||
|
||||
Note:
|
||||
Сообщения о начале прослушивания радио, начале и конце трека, его пропуска.
|
||||
|
||||
Известные типы фидбека: `radioStarted`, `trackStarted`, `trackFinished`, `skip`.
|
||||
Известные типы обратной связи: `radioStarted`, `trackStarted`, `trackFinished`, `skip`.
|
||||
|
||||
Пример `station`: `user:onyourwave`, `genre:allrock`.
|
||||
|
||||
|
@ -1177,7 +1177,7 @@ class Client(YandexMusicObject):
|
|||
|
||||
Args:
|
||||
station (:obj:`str`): Станция.
|
||||
type_ (:obj:`str`): Тип отправляемого фидбека.
|
||||
type_ (:obj:`str`): Тип отправляемого отзыва.
|
||||
timestamp (:obj:`str` | :obj:`float` | :obj:`int`, optional): Текущее время и дата.
|
||||
from_ (:obj:`str`, optional): Откуда начато воспроизведение радио.
|
||||
batch_id (:obj:`str`, optional): Уникальный идентификатор партии треков. Возвращается при получении треков.
|
||||
|
@ -1424,7 +1424,7 @@ class Client(YandexMusicObject):
|
|||
3. Отправить фидбек о начале следующего трека (второй в цепочки).
|
||||
4. Выполнить запрос получения треков. В ответе придёт новые треки или произойдёт сдвиг цепочки на 1 элемент.
|
||||
|
||||
Проход по цепочке до коцна не изучен. Часто встречаются дубликаты.
|
||||
Проход по цепочке до конца не изучен. Часто встречаются дубликаты.
|
||||
|
||||
Все официальные клиенты выполняют запросы с `settings2 = True`.
|
||||
|
||||
|
@ -2260,7 +2260,7 @@ class Client(YandexMusicObject):
|
|||
|
||||
result = self._request.get(url, params=params, *args, **kwargs)
|
||||
|
||||
# TODO судя по всему эндпоинт ещё возвращает рекламу после треков для пользователей без подписки.
|
||||
# TODO (MarshalX) судя по всему ручка ещё возвращает рекламу после треков для пользователей без подписки.
|
||||
return ShotEvent.de_json(result.get('shot_event'), self)
|
||||
|
||||
@log
|
||||
|
|
|
@ -452,7 +452,7 @@ class ClientAsync(YandexMusicObject):
|
|||
**kwargs (:obj:`dict`, optional): Произвольные аргументы (будут переданы в запрос).
|
||||
|
||||
Returns:
|
||||
:obj:`yandex_music.LandingList`: Список подскастов.
|
||||
:obj:`yandex_music.LandingList`: Список подкастов.
|
||||
|
||||
Raises:
|
||||
:class:`yandex_music.exceptions.YandexMusicError`: Базовое исключение библиотеки.
|
||||
|
@ -1092,7 +1092,7 @@ class ClientAsync(YandexMusicObject):
|
|||
|
||||
@log
|
||||
async def rotor_account_status(self, *args, **kwargs) -> Optional[Status]:
|
||||
"""Получение статуса пользователя с дополнителньыми полями.
|
||||
"""Получение статуса пользователя с дополнительными полями.
|
||||
|
||||
Note:
|
||||
Данный статус отличается от обычного наличием дополнительных полей, например, `skips_per_hour`.
|
||||
|
@ -1174,12 +1174,12 @@ class ClientAsync(YandexMusicObject):
|
|||
*args,
|
||||
**kwargs,
|
||||
) -> bool:
|
||||
"""Отправка ответной реакции на происходящее при прослушивании радио.
|
||||
"""Отправка обратной связи на действия при прослушивании радио.
|
||||
|
||||
Note:
|
||||
Сообщения о начале прослушивания радио, начале и конце трека, его пропуска.
|
||||
|
||||
Известные типы фидбека: `radioStarted`, `trackStarted`, `trackFinished`, `skip`.
|
||||
Известные типы обратной связи: `radioStarted`, `trackStarted`, `trackFinished`, `skip`.
|
||||
|
||||
Пример `station`: `user:onyourwave`, `genre:allrock`.
|
||||
|
||||
|
@ -1187,7 +1187,7 @@ class ClientAsync(YandexMusicObject):
|
|||
|
||||
Args:
|
||||
station (:obj:`str`): Станция.
|
||||
type_ (:obj:`str`): Тип отправляемого фидбека.
|
||||
type_ (:obj:`str`): Тип отправляемого отзыва.
|
||||
timestamp (:obj:`str` | :obj:`float` | :obj:`int`, optional): Текущее время и дата.
|
||||
from_ (:obj:`str`, optional): Откуда начато воспроизведение радио.
|
||||
batch_id (:obj:`str`, optional): Уникальный идентификатор партии треков. Возвращается при получении треков.
|
||||
|
@ -1434,7 +1434,7 @@ class ClientAsync(YandexMusicObject):
|
|||
3. Отправить фидбек о начале следующего трека (второй в цепочки).
|
||||
4. Выполнить запрос получения треков. В ответе придёт новые треки или произойдёт сдвиг цепочки на 1 элемент.
|
||||
|
||||
Проход по цепочке до коцна не изучен. Часто встречаются дубликаты.
|
||||
Проход по цепочке до конца не изучен. Часто встречаются дубликаты.
|
||||
|
||||
Все официальные клиенты выполняют запросы с `settings2 = True`.
|
||||
|
||||
|
@ -2276,7 +2276,7 @@ class ClientAsync(YandexMusicObject):
|
|||
|
||||
result = await self._request.get(url, params=params, *args, **kwargs)
|
||||
|
||||
# TODO судя по всему эндпоинт ещё возвращает рекламу после треков для пользователей без подписки.
|
||||
# TODO (MarshalX) судя по всему ручка ещё возвращает рекламу после треков для пользователей без подписки.
|
||||
return ShotEvent.de_json(result.get('shot_event'), self)
|
||||
|
||||
@log
|
||||
|
|
|
@ -10,6 +10,8 @@ if TYPE_CHECKING:
|
|||
from yandex_music import Client
|
||||
from xml.dom.minicompat import NodeList
|
||||
|
||||
SIGN_SALT = 'XGRlBW9FXlekgbPrRHuSiA'
|
||||
|
||||
|
||||
@model
|
||||
class DownloadInfo(YandexMusicObject):
|
||||
|
@ -52,7 +54,7 @@ class DownloadInfo(YandexMusicObject):
|
|||
path = self._get_text_node_data(doc.getElementsByTagName('path'))
|
||||
ts = self._get_text_node_data(doc.getElementsByTagName('ts'))
|
||||
s = self._get_text_node_data(doc.getElementsByTagName('s'))
|
||||
sign = md5(('XGRlBW9FXlekgbPrRHuSiA' + path[1::] + s).encode('utf-8')).hexdigest()
|
||||
sign = md5((SIGN_SALT + path[1::] + s).encode('utf-8')).hexdigest()
|
||||
|
||||
return f'https://{host}/get-mp3/{sign}/{ts}{path}'
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ class UnauthorizedError(YandexMusicError):
|
|||
"""
|
||||
|
||||
|
||||
# TODO (MarshalX) На самом деле поиск еще происходит по кодеку
|
||||
class InvalidBitrateError(YandexMusicError):
|
||||
"""Класс исключения, вызываемого при попытке загрузки трека
|
||||
с недоступным битрейтом.
|
||||
|
@ -28,7 +29,7 @@ class NotFoundError(NetworkError):
|
|||
"""Класс исключения, вызываемый в случае ответа от сервера со статус кодом 404."""
|
||||
|
||||
|
||||
# TimeoutError builtin. И не знаю хотим ли использовать его для синк и asyncio.TimeoutError для асинк
|
||||
# TimeoutError builtin. Пока не знаю хотим ли использовать его для синхронной и asyncio.TimeoutError для асинхронной
|
||||
class TimedOutError(NetworkError):
|
||||
"""Класс исключения, вызываемого для случаев истечения времени ожидания."""
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ if TYPE_CHECKING:
|
|||
|
||||
@model
|
||||
class Experiments(YandexMusicObject):
|
||||
"""Класс, представляющий какие-то свистелки-перделки, флажки, режимы экспериментальных функций.
|
||||
"""Класс, представляющий какие-то свистелки и перделки, флажки, режимы экспериментальных функций.
|
||||
|
||||
Attributes:
|
||||
client (:obj:`yandex_music.Client`): Клиент Yandex Music.
|
||||
|
@ -35,7 +35,7 @@ class Experiments(YandexMusicObject):
|
|||
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
|
||||
|
||||
Returns:
|
||||
:obj:`yandex_music.Experiments`: Какие-то свистелки-перделки, флажки, режимы экспериментальных функций.
|
||||
:obj:`yandex_music.Experiments`: Какие-то свистелки и перделки, флажки, режимы экспериментальных функций.
|
||||
"""
|
||||
if not data:
|
||||
return None
|
||||
|
|
|
@ -9,7 +9,7 @@ if TYPE_CHECKING:
|
|||
|
||||
@model
|
||||
class Pager(YandexMusicObject):
|
||||
"""Класс, представляющий пагинатор.
|
||||
"""Класс, представляющий пагинацию.
|
||||
|
||||
Attributes:
|
||||
total (:obj:`int`): Всего треков.
|
||||
|
@ -35,7 +35,7 @@ class Pager(YandexMusicObject):
|
|||
client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music.
|
||||
|
||||
Returns:
|
||||
:obj:`yandex_music.Pager`: Пагинатор.
|
||||
:obj:`yandex_music.Pager`: Пагинация.
|
||||
"""
|
||||
if not data:
|
||||
return None
|
||||
|
|
読み込み中…
新しいイシューから参照