Хелперы для чтения состояния 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.utils.get_active_device(state)
Возвращает активное (играющее) устройство.
- Parameters:
state – Состояние Ynison.
- Returns:
- Активное устройство
или
None, если ни одно устройство не активно.
- Return type:
- 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, если сдвиг выходит за границы очереди или текущий трек не определён.
- Индекс в playable_list или
- 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