Синхронный клиент Ynison
Синхронный клиент Ynison.
- class yandex_music.ynison.client.YnisonClient
Синхронный клиент Ynison.
Блокирующий websocket-клиент для подписки на состояние плеера Яндекс Музыки и управления воспроизведением. Под капотом получает у сервиса редиректа персональный хост и держит к нему постоянное соединение. При обрыве соединения клиент сам переподключается (каждый раз заново проходя редирект), выдерживая паузы, которые рекомендует сервер.
Для разовых сценариев используйте контекстный менеджер
session()или функции изyandex_music.ynison.simple.Note
Один device_id может использоваться только одним живым подключением: новое подключение с тем же идентификатором вытесняет старое, и старое завершается с
yandex_music.exceptions.YnisonDeviceDisplacedError.- Пример:
>>> with YnisonClient(token).session() as client: ... print(client.current_playable) ... client.next_track()
- on_state(listener)
Регистрирует listener, вызываемый на каждый фрейм состояния.
Можно использовать как декоратор. Listener вызывается из потока receive-loop’а. Исключения listener’а логируются в логгер yandex_music.ynison и не прерывают приём фреймов.
- Parameters:
listener – Синхронный callable, принимающий
yandex_music.ynison.models.ynison_state.PutYnisonStateResponse.- Returns:
Тот же listener (для удобства использования как декоратор).
- Raises:
TypeError – Если передана корутинная функция. Для них используйте
YnisonClientAsync.
- connect()
Блокирующий цикл подключения.
Получает редирект, подключается к state-хосту и обрабатывает входящие фреймы. При потере соединения переподключается. Возвращает управление после
disconnect().- Пример:
>>> client = YnisonClient(token) >>> threading.Thread(target=client.connect, daemon=True).start()
- Raises:
yandex_music.exceptions.YnisonUnauthorizedError – Неверный или истёкший токен.
yandex_music.exceptions.YnisonDeviceDisplacedError – Подключился другой клиент с тем же device_id.
yandex_music.exceptions.YnisonError – Клиент уже запущен, или превышен max_reconnect_attempts (выбрасывается последняя ошибка соединения).
- disconnect()
Останавливает подключение.
connect()вернёт управление в ближайшее время. Повторный вызов ничего не делает. После отключения клиента можно подключить заново.
- session(timeout=10.0)
Контекстный менеджер для подключения на время блока.
Запускает
connect()в фоновом потоке, ждёт первый фрейм состояния и отдаёт клиента с заполненнымlatest_state. По выходу из блока отключается и дожидается завершения потока.- Parameters:
timeout – Максимальное время ожидания начального фрейма, в секундах.
- Yields:
yandex_music.ynison.YnisonClient– Этот же клиент, уже с загруженным состоянием.- Raises:
yandex_music.exceptions.YnisonTimeoutError – Если начальный фрейм не пришёл за timeout секунд.
yandex_music.exceptions.YnisonUnauthorizedError – Неверный или истёкший токен.
yandex_music.exceptions.YnisonError – Любая другая терминальная ошибка подключения.
- send(request)
Отправляет произвольный запрос по state websocket’у.
- Parameters:
request – Готовый
PutYnisonStateRequest; обычно собирается через билдеры изyandex_music.ynison.messages.- Raises:
yandex_music.exceptions.YnisonConnectionClosedError – Если соединения нет или оно закрыто.
- pause()
Ставит воспроизведение на паузу на активном устройстве.
- Raises:
yandex_music.exceptions.YnisonNoActiveDeviceError – Если нет активного устройства.
yandex_music.exceptions.YnisonConnectionClosedError – Если соединение закрыто.
- resume()
Снимает паузу на активном устройстве.
- Raises:
yandex_music.exceptions.YnisonNoActiveDeviceError – Если нет активного устройства.
yandex_music.exceptions.YnisonConnectionClosedError – Если соединение закрыто.
- next_track()
Переключает на следующий трек в очереди (с учётом перемешивания).
- Raises:
yandex_music.exceptions.YnisonQueueBoundaryError – Если текущий трек последний.
yandex_music.exceptions.YnisonConnectionClosedError – Если соединение закрыто.
- previous_track()
Переключает на предыдущий трек в очереди (с учётом перемешивания).
- Raises:
yandex_music.exceptions.YnisonQueueBoundaryError – Если текущий трек первый.
yandex_music.exceptions.YnisonConnectionClosedError – Если соединение закрыто.
- set_volume(volume, target_device_id=None)
Устанавливает громкость на указанном или активном устройстве.
- Parameters:
volume – Громкость в диапазоне [0.0; 1.0]; значения вне диапазона обрезаются.
target_device_id – Идентификатор устройства. По умолчанию активное устройство.
- Raises:
yandex_music.exceptions.YnisonNoActiveDeviceError – Если устройство не указано и активного нет.
yandex_music.exceptions.YnisonConnectionClosedError – Если соединение закрыто.