Модели Ynison State
Модели Ynison State.
- class yandex_music.ynison.models.ynison_state.VideoClipInfoRecommendationType
Способ попадания видеоклипа в очередь.
- class yandex_music.ynison.models.ynison_state.PlayerQueueEntityType
Тип сущности, от которой порождена очередь (устаревший, см.
PlayerQueueQueue).
- class yandex_music.ynison.models.ynison_state.PlayerQueueEntityContext
Контекст воспроизведения очереди.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSourceSourceType
Способ попадания трека в волновую очередь.
- class yandex_music.ynison.models.ynison_state.PlayerStateOptionsRepeatMode
Режим повтора воспроизведения.
- class yandex_music.ynison.models.ynison_state.PlayerQueueInjectPlayablePlayableType
Тип инжектируемой в очередь сущности.
- class yandex_music.ynison.models.ynison_state.PutYnisonStateRequestActivityInterceptionType
Тактика перехвата активности устройством, отправившим сообщение.
- class yandex_music.ynison.models.ynison_state.Playable
Класс, представляющий проигрываемую сущность.
Может быть треком, видеоклипом и т.п.
-
album_id_optional:
stroptional Опциональный идентификатор альбома. Используется для составного идентификатора playable при
playable_type == TRACK.
-
playable_type:
yandex_music.ynison.models.ynison_state.PlayablePlayableType Тип сущности.
-
cover_url_optional:
stroptional Опциональная ссылка на обложку. Может содержать плейсхолдер для размера в аватарнице.
-
video_clip_info:
yandex_music.ynison.models.ynison_state.VideoClipInfo Дополнительная информация о видеоклипе (в oneof с
track_info).
-
track_info:
yandex_music.ynison.models.ynison_state.TrackInfo Дополнительная информация о треке (в oneof с
video_clip_info).
Хеш для play-audio. Используется для определения хеша навигации пользователя при изменении проигрываемой сущности в очереди.
-
album_id_optional:
- class yandex_music.ynison.models.ynison_state.VideoClipInfo
Класс, представляющий дополнительную информацию о видеоклипе.
-
recommendation_type:
yandex_music.ynison.models.ynison_state.VideoClipInfoRecommendationType Способ попадания видеоклипа в очередь (для аналитики).
-
recommendation_type:
- class yandex_music.ynison.models.ynison_state.TrackInfo
Класс, представляющий дополнительную информацию о треке.
- class yandex_music.ynison.models.ynison_state.PlayerQueue
Класс, представляющий очередь воспроизведения.
-
entity_id:
str Идентификатор сущности (альбома/плейлиста/радио и др.). Устаревшее поле; новый клиент должен читать и писать
queue.
-
entity_type:
yandex_music.ynison.models.ynison_state.PlayerQueueEntityType Тип сущности. Устаревшее поле; новый клиент должен использовать
queue.
-
queue:
yandex_music.ynison.models.ynison_state.PlayerQueueQueue Новая иерархическая структура очередей с oneof по типам.
-
playable_list:
listизyandex_music.ynison.models.ynison_state.Playable Список сущностей в очереди.
-
options:
yandex_music.ynison.models.ynison_state.PlayerStateOptions Настройки плеера.
-
version:
yandex_music.ynison.models.ynison_state.UpdateVersion Версия последнего изменения очереди.
-
shuffle_optional:
yandex_music.ynison.models.ynison_state.Shuffle Настройки шаффла. При выключенном шаффле не приходят.
-
entity_context:
yandex_music.ynison.models.ynison_state.PlayerQueueEntityContext Контекст воспроизведения. Устаревшее поле; контекст теперь применяется только к сущностям из фонотеки в
queue.
-
from_optional:
stroptional Опциональный фром очереди. Используется, когда фром нельзя достать из
playable_list(например, пустая ЕОВ-очередь радио).
-
initial_entity_optional:
yandex_music.ynison.models.ynison_state.PlayerQueueInitialEntity Изначальный id+type сущности, которой была проинициализирована очередь. Устаревшее поле; источник трека теперь берётся из
[WaveQueue.EntityOptions.track_sources].
-
adding_options_optional:
yandex_music.ynison.models.ynison_state.PlayerQueuePlayerQueueOptions Дополнительные параметры. Устаревшее поле; см.
queue.
Поле обратной совместимости для клиентов без поддержки WaveQueue. Работает как
[WaveQueue.navigation_id_optional].
-
entity_id:
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueue
Класс, представляющий иерархическую структуру очередей.
Каждому виду очередей соответствует один из типов
PlayablePlayableType. Каждому playable’у с типомTRACKсоответствует сущность из таблицы сущностей (см.PlayerQueueQueueWaveQueueEntityOptions). Очереди не имеют универсального идентификатора: каждая сама решает, что её идентифицирует (см.type).-
wave_queue:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueue Волновая очередь (в oneof
type).
-
generative_queue:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueGenerativeQueue Очередь нейромузыки (в oneof
type).
-
fm_radio_queue:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueFmRadioQueue Очередь FM-радио (в oneof
type).
-
video_wave_queue:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueVideoWaveQueue Очередь видеоклипов (в oneof
type).
-
local_tracks_queue:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueLocalTracksQueue Очередь локальных треков с устройства (в oneof
type).
-
wave_queue:
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueue
Класс, представляющий волновую очередь.
Состоит из
PlayablePlayableType.TRACK. Автоматически продлевается, если треки закончились. Поддерживает «Скип», «Лайк/Дизлайк», «Играть следующим», «Добавить в очередь», «Удалить», «Переместить», «Повтор трека».Может находиться в двух состояниях:
Играли только треки фонотечных сущностей, но ещё не были запрошены рекомендательные треки. В этом состоянии
entity_options.wave_entity_optionalне задано.Рекомендательные треки были запрошены. В таблице сущностей появляется единственная уникальная запись
PlayerQueueQueueWaveQueueEntityOptionsWaveSession, которую можно использовать как идентификатор очереди.
Очередь состоит из трёх частей: прослушанные треки (в
playable_list), добавленные в очередь непрослушанные треки (вplayable_list), непрослушанные рекомендованные треки (вrecommended_playable_list).-
recommended_playable_list:
listизyandex_music.ynison.models.ynison_state.Playable Непрослушанные рекомендованные треки. У таких треков следует передавать
batch_id. Список может быть непустым только если заполненоentity_options.wave_entity_optional. Исторический нюанс: вplayable_listв конце при наличии лежит один первый рекомендованный трек для отображения обложки следующего трека в плеере.
-
live_playable_index:
int Индекс последнего прослушанного трека в состоянии «с рекомендательными треками»; индекс потенциального рекомендательного трека в состоянии «без рекомендательных треков». Возможны значения
[current_playable_index, playable_list.size)в первом состоянии иplayable_list.sizeво втором. Значение-1означает пустую очередь.
-
entity_options:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptions Параметры сущностей для смешанной трековой очереди.
Хеш очереди для аналитики новых фромов, чтобы склеить воспроизведения с полной навигацией пользователя. Генерируется один раз для очереди и восстанавливается при синхронизации с клиентами.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptions
Класс, представляющий параметры сущностей волновой очереди.
-
wave_entity_optional:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSession Идентификатор rotor-сессии, к которой относятся все рекомендованные треки в этой очереди. Если поле задано, очередь бесконечно достраивается из этой сессии; иначе достраиваться не может.
-
track_sources:
listизyandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsTrackSourceWithKey Таблица контекстов/сущностей очереди для оптимизации объёма стейта.
-
wave_entity_optional:
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSession
Класс, представляющий rotor-сессию волновой очереди.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsTrackSourceWithKey
Класс, представляющий запись в таблице источников треков с ключом.
-
key:
int Ключ для доступа к сущности. Должен быть уникальным в рамках таблицы; стабильность не требуется, но в рамках одного стейта должен быть консистентным.
-
wave_source:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSource Волновой источник (в oneof
track_source).
-
phonoteka_source:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsPhonotekaSource Фонотечный источник (в oneof
track_source).
-
key:
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSource
Класс, представляющий волновой источник попадания трека в очередь.
Трек в волну попадает в результате ответа рекомендаций. Рекомендации делятся на онлайн- и оффлайн-рекомендации (оффлайн-волна).
-
source_type:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSourceSourceType Способ попадания трека в волновую очередь.
-
source_type:
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsPhonotekaSource
Класс, представляющий фонотечный источник попадания трека в очередь.
-
artist_id:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsArtistId Идентификатор артиста (в oneof
id).
-
playlist_id:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsPlaylistId Идентификатор плейлиста (в oneof
id).
-
album_id:
yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsAlbumId Идентификатор альбома (в oneof
id).
-
entity_context:
yandex_music.ynison.models.ynison_state.PlayerQueueEntityContext Контекст воспроизведения.
-
artist_id:
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsArtistId
Класс, представляющий идентификатор артиста в фонотечном источнике.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsPlaylistId
Класс, представляющий идентификатор плейлиста в фонотечном источнике.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsAlbumId
Класс, представляющий идентификатор альбома в фонотечном источнике.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueGenerativeQueue
Класс, представляющий поток нейромузыки.
Состоит из одного
PlayablePlayableType.INFINITE.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueFmRadioQueue
Класс, представляющий поток FM-радио.
Состоит из одного
PlayablePlayableType.INFINITE.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueVideoWaveQueue
Класс, представляющий рекомендательную очередь видеоклипов.
Состоит из
PlayablePlayableType.VIDEO_CLIP.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueLocalTracksQueue
Класс, представляющий очередь локальных треков с устройства.
Состоит из
PlayablePlayableType.LOCAL_TRACK. Такую очередь нельзя перенести через Ynison на другое устройство, но можно отобразить простейший пульт. Локальные треки не могут быть перемешаны с обычными треками (PlayablePlayableType.TRACK).
- class yandex_music.ynison.models.ynison_state.PlayerQueueInitialEntity
Класс, представляющий изначальную сущность очереди (устаревший).
-
entity_type:
yandex_music.ynison.models.ynison_state.PlayerQueueEntityType Тип сущности.
-
entity_type:
- class yandex_music.ynison.models.ynison_state.PlayerQueuePlayerQueueOptions
Класс, представляющий дополнительные параметры очереди (устаревший).
-
radio_options:
yandex_music.ynison.models.ynison_state.PlayerQueuePlayerQueueOptionsRadioOptions Параметры радио-очереди (в oneof
options).
-
radio_options:
- class yandex_music.ynison.models.ynison_state.PlayerQueuePlayerQueueOptionsRadioOptions
Класс, представляющий параметры радио-очереди (устаревший).
Для
entity_type == RADIO(4). Информация о волновой очереди теперь находится в[WaveQueue.EntityOptions.wave_entity_optional].
- class yandex_music.ynison.models.ynison_state.PlayerStateOptions
Класс, представляющий настройки плеера.
-
repeat_mode:
yandex_music.ynison.models.ynison_state.PlayerStateOptionsRepeatMode Режим повтора.
-
repeat_mode:
- class yandex_music.ynison.models.ynison_state.Device
Класс, представляющий устройство.
-
info:
yandex_music.ynison.models.ynison_state.DeviceInfo Информация об устройстве.
-
capabilities:
yandex_music.ynison.models.ynison_state.DeviceCapabilities Настройки доступности.
-
session:
yandex_music.ynison.models.ynison_state.Session Информация о сессии; уникальна для каждого отдельно инициализированного подключения.
-
volume_info:
yandex_music.ynison.models.ynison_state.DeviceVolume Состояние громкости устройства вместе с информацией о последнем изменившем её устройстве.
-
info:
- class yandex_music.ynison.models.ynison_state.DeviceVolume
Класс, представляющий состояние громкости устройства.
-
volume:
float Громкость в интервале
[0.0; 1.0]. Значение тесно связано с[DeviceCapabilities.volume_granularity]; ожидается округление мантиссы до 4 знаков при делении1.0на число шагов шкалы.
-
version:
yandex_music.ynison.models.ynison_state.UpdateVersion Версия последнего изменения громкости устройства.
-
volume:
- class yandex_music.ynison.models.ynison_state.DeviceInfo
Класс, представляющий информацию об устройстве.
-
type:
yandex_music.ynison.models.ynison_state.DeviceType Тип устройства.
-
type:
- class yandex_music.ynison.models.ynison_state.DeviceCapabilities
Класс, представляющий настройки доступности устройства.
- class yandex_music.ynison.models.ynison_state.Session
Класс, представляющий сессию подключения устройства.
- class yandex_music.ynison.models.ynison_state.PlayingStatus
Класс, представляющий статус воспроизведения.
-
progress_ms:
int Прогресс проигрываемой сущности в миллисекундах, в интервале
[0; длина]. Для infinite-очередей равен0.
-
duration_ms:
int Длительность проигрываемой сущности в миллисекундах. Для infinite-очередей равна
0.
-
version:
yandex_music.ynison.models.ynison_state.UpdateVersion Версия последнего изменения статуса воспроизведения.
-
progress_ms:
- class yandex_music.ynison.models.ynison_state.PlayerQueueInject
Класс, представляющий состояние проигрывания инжектируемой в очередь сущности.
Инжектироваться может шот, преролл и т.п.
-
playing_status:
yandex_music.ynison.models.ynison_state.PlayingStatus Статус воспроизведения.
-
playable:
yandex_music.ynison.models.ynison_state.PlayerQueueInjectPlayable Дополнительная проигрываемая сущность.
-
version:
yandex_music.ynison.models.ynison_state.UpdateVersion Версия последнего изменения состояния.
-
playing_status:
- class yandex_music.ynison.models.ynison_state.PlayerQueueInjectPlayable
Класс, представляющий инжектируемую в очередь сущность.
-
playable_type:
yandex_music.ynison.models.ynison_state.PlayerQueueInjectPlayablePlayableType Тип сущности.
-
playable_type:
- class yandex_music.ynison.models.ynison_state.PlayerState
Класс, представляющий состояние плеера.
-
status:
yandex_music.ynison.models.ynison_state.PlayingStatus Статус воспроизведения.
-
player_queue:
yandex_music.ynison.models.ynison_state.PlayerQueue Текущая очередь.
-
player_queue_inject_optional:
yandex_music.ynison.models.ynison_state.PlayerQueueInject Состояние проигрывания инжектируемой в очередь сущности.
-
status:
- class yandex_music.ynison.models.ynison_state.PutYnisonStateRequest
Класс, представляющий запрос на обновление состояния Ynison.
Клиент отправляет на сервер один из параметров в зависимости от произошедшего события.
-
update_full_state:
yandex_music.ynison.models.ynison_state.UpdateFullState Обновить общее состояние (в oneof
parameters).
-
update_active_device:
yandex_music.ynison.models.ynison_state.UpdateActiveDevice Обновить активное устройство (в oneof
parameters).
-
update_playing_status:
yandex_music.ynison.models.ynison_state.UpdatePlayingStatus Обновить статус воспроизведения (в oneof
parameters).
-
update_player_state:
yandex_music.ynison.models.ynison_state.UpdatePlayerState Обновить состояние плеера (в oneof
parameters).
-
update_volume:
yandex_music.ynison.models.ynison_state.UpdateVolume Обновить громкость (устаревшее, см.
update_volume_info).
-
update_player_queue_inject:
yandex_music.ynison.models.ynison_state.UpdatePlayerQueueInject Обновить состояние проигрывания инжектируемой сущности (в oneof
parameters).
-
update_session_params:
yandex_music.ynison.models.ynison_state.UpdateSessionParams Обновить информацию об устройстве-отправителе (в oneof
parameters).
-
update_volume_info:
yandex_music.ynison.models.ynison_state.UpdateVolumeInfo Обновить громкость (в oneof
parameters).
-
sync_state_from_eov:
yandex_music.ynison.models.ynison_state.SyncStateFromEOV Запросить синхронизацию с сервисом ЕОВ (в oneof
parameters).
-
activity_interception_type:
yandex_music.ynison.models.ynison_state.PutYnisonStateRequestActivityInterceptionType Тактика перехвата активности устройством-отправителем.
-
update_full_state:
- class yandex_music.ynison.models.ynison_state.PutYnisonStateResponse
Класс, представляющий ответ сервера на обновление состояния Ynison.
Сервер отправляет фрейм клиенту в трёх случаях: в ответ на
PutYnisonStateRequest, меняющий состояние на сервере; при обновлении на другом клиенте, которое нужно транслировать всем подключённым устройствам; при изменении списка устройств.-
player_state:
yandex_music.ynison.models.ynison_state.PlayerState Состояние плеера.
-
devices:
listизyandex_music.ynison.models.ynison_state.Device Список подключённых устройств.
-
player_state:
- class yandex_music.ynison.models.ynison_state.UpdatePlayerQueueInject
Класс, представляющий обновление состояния инжектируемой в очередь сущности.
-
player_queue_inject:
yandex_music.ynison.models.ynison_state.PlayerQueueInject Состояние инжектируемой сущности.
-
player_queue_inject:
- class yandex_music.ynison.models.ynison_state.UpdateActiveDevice
Класс, представляющий обновление активного устройства.
Отправляется при выборе пользователем устройства, которое должно проигрывать звук.
- class yandex_music.ynison.models.ynison_state.UpdatePlayingStatus
Класс, представляющий обновление статуса воспроизведения.
Отправляется при старте, паузе, перемотке или изменении скорости воспроизведения.
-
playing_status:
yandex_music.ynison.models.ynison_state.PlayingStatus Новый статус воспроизведения.
-
playing_status:
- class yandex_music.ynison.models.ynison_state.UpdateVolume
Класс, представляющий обновление уровня громкости (устаревший).
См.
UpdateVolumeInfo.
- class yandex_music.ynison.models.ynison_state.UpdateVolumeInfo
Класс, представляющий обновление громкости устройства.
-
volume_info:
yandex_music.ynison.models.ynison_state.DeviceVolume Новое значение состояния громкости с версией изменений.
-
volume_info:
- class yandex_music.ynison.models.ynison_state.UpdatePlayerState
Класс, представляющий обновление состояния плеера.
Отправляется при старте новой очереди, её обновлении (добавление/удаление сущности) и изменении режима повтора/шаффла.
-
player_state:
yandex_music.ynison.models.ynison_state.PlayerState Новое состояние воспроизведения.
-
player_state:
- class yandex_music.ynison.models.ynison_state.UpdateFullState
Класс, представляющий обновление полного состояния проигрывания и устройств.
Отправляется при холодном старте, выключении оффлайн-режима и появлении сети после её отключения.
-
player_state:
yandex_music.ynison.models.ynison_state.PlayerState Состояние плеера.
-
device:
yandex_music.ynison.models.ynison_state.UpdateDevice Информация об устройстве.
-
sync_state_from_eov_optional:
yandex_music.ynison.models.ynison_state.SyncStateFromEOV Запрос синхронизации с сервисом ЕОВ во время обработки
UpdateFullState. Если не передан, синхронизация будет вызвана только для сценариев холодного старта.
-
player_state:
- class yandex_music.ynison.models.ynison_state.UpdateSessionParams
Класс, представляющий обновление поведения сервера в отношении устройства в рамках сессии.
Параметры сбрасываются при переподключении.
- class yandex_music.ynison.models.ynison_state.UpdateDevice
Класс, представляющий информацию об устройстве, передаваемую самим устройством на сервер.
-
info:
yandex_music.ynison.models.ynison_state.DeviceInfo Информация об устройстве.
-
capabilities:
yandex_music.ynison.models.ynison_state.DeviceCapabilities Настройки доступности.
-
volume_info:
yandex_music.ynison.models.ynison_state.DeviceVolume Громкость устройства.
-
info:
- class yandex_music.ynison.models.ynison_state.SyncStateFromEOV
Класс, представляющий запрос синхронизации с сервисом ЕОВ (единой очереди воспроизведения).
Запрос синхронизации может быть отклонён сервером, если текущее устройство не активно и не получило активности в результате вызова этого метода.
Сценарий обновления:
Бэкенд проверяет активность устройства и делает его активным, если требуется (см.
PutYnisonStateRequestActivityInterceptionType).Если устройство не является активным после шага 1, команда тихо игнорируется.
Бэкенд получает список очередей из ЕОВ.
Если id последней очереди в списке совпадает с
actual_queue_id, обновление не произойдёт, переход к пункту 6.Пробуем обновить стейт на основании ЕОВ. Новое состояние плеера будет содержать
[UpdateVersion#device_id], отличный от id устройства-отправителя.Если стейт был обновлён или сменилось активное устройство, рассылаем эвент всем устройствам. Иначе выходим без событий и ошибок.