Синхронный клиент 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:
disconnect()

Останавливает подключение.

connect() вернёт управление в ближайшее время. Повторный вызов ничего не делает. После отключения клиента можно подключить заново.

session(timeout=10.0)

Контекстный менеджер для подключения на время блока.

Запускает connect() в фоновом потоке, ждёт первый фрейм состояния и отдаёт клиента с заполненным latest_state. По выходу из блока отключается и дожидается завершения потока.

Parameters:

timeout – Максимальное время ожидания начального фрейма, в секундах.

Yields:

yandex_music.ynison.YnisonClient – Этот же клиент, уже с загруженным состоянием.

Raises:
send(request)

Отправляет произвольный запрос по state websocket’у.

Parameters:

request – Готовый PutYnisonStateRequest; обычно собирается через билдеры из yandex_music.ynison.messages.

Raises:

yandex_music.exceptions.YnisonConnectionClosedError – Если соединения нет или оно закрыто.

pause()

Ставит воспроизведение на паузу на активном устройстве.

Raises:
resume()

Снимает паузу на активном устройстве.

Raises:
next_track()

Переключает на следующий трек в очереди (с учётом перемешивания).

Raises:
previous_track()

Переключает на предыдущий трек в очереди (с учётом перемешивания).

Raises:
set_volume(volume, target_device_id=None)

Устанавливает громкость на указанном или активном устройстве.

Parameters:
  • volume – Громкость в диапазоне [0.0; 1.0]; значения вне диапазона обрезаются.

  • target_device_id – Идентификатор устройства. По умолчанию активное устройство.

Raises: