Синхронный клиент Ynison
Синхронный клиент Ynison.
- class yandex_music.ynison._client.client.YnisonClient
Синхронный клиент Ynison.
Блокирующий websocket-клиент для подписки на состояние плеера Яндекс Музыки и отправки команд управления. Под капотом открывает два websocket-соединения: сначала к сервису редиректа, затем к персональному хосту Ynison.
Для разовых сценариев «открыть соединение → сделать одно действие → закрыть» используйте
yandex_music.ynison.simpleили контекстный менеджерsession().Note
Интерфейс рассчитан на опытных разработчиков, знакомых с работой websocket-подобных долгоживущих соединений. Нужно самостоятельно управлять фоновым потоком
connect(), обрабатывать переподключения, возможные ошибки receive-loop’а и вовремя вызыватьdisconnect(). Если нужны типовые операции (получить текущий трек, поставить паузу, переключить трек) — используйтеyandex_music.ynison.simple.- connect()
Блокирующий цикл подключения.
Последовательно: редиректный websocket → state websocket → receive-loop на входящие фреймы. Возвращает управление только после вызова
disconnect()(или фатальной ошибки соединения).- Пример:
>>> import threading >>> client = YnisonClient(token) >>> threading.Thread(target=client.connect, daemon=True).start()
- disconnect()
Останавливает websocket.
Блокирующий
connect()вернёт управление в ближайшем receive-цикле. Повторный вызов — no-op.
- send(request)
Отправляет запрос по state websocket’у.
- Parameters:
request – Готовый
PutYnisonStateRequest; обычно собирается через билдеры изyandex_music.ynison.messages.- Raises:
yandex_music.exceptions.YnisonError – Если state websocket ещё не подключён.
- session(timeout=10.0)
Контекстный менеджер для разового подключения.
Запускает
connect()в daemon-потоке, ждёт первый фрейм состояния и отдаёт клиента с заполненнымlatest_state. По выходу из блока вызываетdisconnect()и дожидается завершения потока.- Parameters:
timeout – Максимальное время ожидания начального фрейма, в секундах.
- Yields:
yandex_music.ynison.YnisonClient– Этот же клиент, уже с загруженным состоянием.- Raises:
yandex_music.exceptions.YnisonError – Если начальный фрейм не пришёл за timeout секунд.