Асинхронный клиент Ynison

Асинхронный клиент Ynison.

class yandex_music.ynison._client.client_async.YnisonClientAsync

Асинхронный клиент Ynison.

Асинхронный websocket-клиент для подписки на состояние плеера и отправки команд управления. По интерфейсу совпадает с синхронным yandex_music.ynison.YnisonClient: все ключевые операции возвращают корутины.

Для разовых сценариев используйте yandex_music.ynison.simple_async или контекстный менеджер session().

Note

Интерфейс рассчитан на опытных разработчиков, знакомых с работой websocket-подобных долгоживущих соединений. Нужно самостоятельно управлять фоновой задачей connect(), обрабатывать переподключения, возможные ошибки receive-loop’а и вовремя вызывать disconnect(). Если нужны типовые операции (получить текущий трек, поставить паузу, переключить трек) — используйте yandex_music.ynison.simple_async.

latest_state

Последний полученный фрейм состояния.

device_id

Идентификатор этого клиента в Ynison-сессии.

async connect()

Корутина цикла подключения.

Последовательно: редиректный websocket → state websocket → receive-loop на входящие фреймы. Возвращает управление только после disconnect() (или фатальной ошибки).

Пример:
>>> import asyncio
>>> client = YnisonClientAsync(token)
>>> task = asyncio.create_task(client.connect())
async disconnect()

Останавливает websocket.

Корутина connect() завершится в ближайшем receive-цикле. Повторный вызов — no-op.

async send(request)

Отправляет запрос по state websocket’у.

Parameters:

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

Raises:

yandex_music.exceptions.YnisonError – Если state websocket ещё не подключён.

session(timeout=10.0)

Асинхронный контекстный менеджер для разового подключения.

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

Parameters:

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

Yields:

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

Raises:

yandex_music.exceptions.YnisonError – Если начальный фрейм не пришёл за timeout секунд.