Хелперы для чтения состояния Ynison

Хелперы для чтения состояния Ynison.

Функции принимают модели из yandex_music.ynison.models.ynison_state и инкапсулируют типовые вычисления: текущий трек, активное устройство, порядок воспроизведения с учётом перемешивания, актуальный прогресс.

yandex_music.ynison.utils.get_current_playable(state)

Возвращает текущий трек в очереди.

Parameters:

state – Состояние Ynison.

Returns:

Текущий playable

или None, если очередь пуста или индекс вне списка.

Return type:

yandex_music.ynison.models.ynison_state.Playable | None

yandex_music.ynison.utils.get_active_device(state)

Возвращает активное (играющее) устройство.

Parameters:

state – Состояние Ynison.

Returns:

Активное устройство

или None, если ни одно устройство не активно.

Return type:

yandex_music.ynison.models.ynison_state.Device | None

yandex_music.ynison.utils.get_playback_order(queue)

Возвращает порядок воспроизведения индексов очереди.

Если включено перемешивание, порядок берётся из Shuffle.playable_indices, иначе индексы идут по порядку.

Parameters:

queue – Очередь воспроизведения.

Returns:

Индексы playable_list в порядке воспроизведения.

Return type:

list из int

yandex_music.ynison.utils.get_neighbour_index(queue, delta)

Возвращает индекс трека, соседнего с текущим в порядке воспроизведения.

Parameters:
  • queue – Очередь воспроизведения.

  • delta – Сдвиг в порядке воспроизведения; 1 для следующего, -1 для предыдущего.

Returns:

Индекс в playable_list или None, если сдвиг

выходит за границы очереди или текущий трек не определён.

Return type:

int | None

yandex_music.ynison.utils.get_current_progress_ms(status, now_ms=None)

Возвращает актуальный прогресс воспроизведения с учётом прошедшего времени.

Сервер присылает прогресс на момент последнего изменения статуса. Пока трек играет, реальная позиция уходит вперёд на (now - version.timestamp_ms) * playback_speed.

Parameters:
  • status – Статус воспроизведения из состояния.

  • now_ms – Текущее unix-время в миллисекундах; по умолчанию системное.

Returns:

Прогресс в миллисекундах, ограниченный длительностью трека (если она известна).

Return type:

int