Модели 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
Опциональный идентификатор альбома. Используется для составного идентификатора playable при
playable_type == TRACK.- Type:
str, optional
- cover_url_optional
Опциональная ссылка на обложку. Может содержать плейсхолдер для размера в аватарнице.
- Type:
str, optional
Хеш для play-audio. Используется для определения хеша навигации пользователя при изменении проигрываемой сущности в очереди.
- Type:
str, optional
- class yandex_music.ynison.models.ynison_state.VideoClipInfo
Класс, представляющий дополнительную информацию о видеоклипе.
- class yandex_music.ynison.models.ynison_state.TrackInfo
Класс, представляющий дополнительную информацию о треке.
- class yandex_music.ynison.models.ynison_state.PlayerQueue
Класс, представляющий очередь воспроизведения.
- entity_id
Идентификатор сущности (альбома/плейлиста/радио и др.). Устаревшее поле; новый клиент должен читать и писать
queue.- Type:
str
- entity_context
Контекст воспроизведения. Устаревшее поле; контекст теперь применяется только к сущностям из фонотеки в
queue.
- from_optional
Опциональный фром очереди. Используется, когда фром нельзя достать из
playable_list(например, пустая ЕОВ-очередь радио).- Type:
str, optional
- initial_entity_optional
Изначальный id+type сущности, которой была проинициализирована очередь. Устаревшее поле; источник трека теперь берётся из
[WaveQueue.EntityOptions.track_sources].
Поле обратной совместимости для клиентов без поддержки WaveQueue. Работает как
[WaveQueue.navigation_id_optional].- Type:
str, optional
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueue
Класс, представляющий иерархическую структуру очередей.
Каждому виду очередей соответствует один из типов
PlayablePlayableType. Каждому playable’у с типомTRACKсоответствует сущность из таблицы сущностей (см.PlayerQueueQueueWaveQueueEntityOptions). Очереди не имеют универсального идентификатора — каждая сама решает, что её идентифицирует (см.type).
- 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
Непрослушанные рекомендованные треки. У таких треков следует передавать
batch_id. Список может быть непустым только если заполненоentity_options.wave_entity_optional. Исторический нюанс: вplayable_listв конце при наличии лежит один первый рекомендованный трек для отображения обложки следующего трека в плеере.- Type:
- live_playable_index
Индекс последнего прослушанного трека в состоянии «с рекомендательными треками»; индекс потенциального рекомендательного трека в состоянии «без рекомендательных треков». Возможны значения
[current_playable_index, playable_list.size)в первом состоянии иplayable_list.sizeво втором. Значение-1— пустая очередь.- Type:
int
Хеш очереди для аналитики новых фромов, чтобы склеить воспроизведения с полной навигацией пользователя. Генерируется один раз для очереди и восстанавливается при синхронизации с клиентами.
- Type:
str, optional
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptions
Класс, представляющий параметры сущностей волновой очереди.
- wave_entity_optional
Идентификатор rotor-сессии, к которой относятся все рекомендованные треки в этой очереди. Если поле задано, очередь бесконечно достраивается из этой сессии; иначе достраиваться не может.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSession
Класс, представляющий rotor-сессию волновой очереди.
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsTrackSourceWithKey
Класс, представляющий запись в таблице источников треков с ключом.
- key
Ключ для доступа к сущности. Должен быть уникальным в рамках таблицы; стабильность не требуется, но в рамках одного стейта должен быть консистентным.
- Type:
int
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsWaveSource
Класс, представляющий волновой источник попадания трека в очередь.
Трек в волну попадает в результате ответа рекомендаций. Рекомендации делятся на онлайн- и оффлайн-рекомендации (оффлайн-волна).
- class yandex_music.ynison.models.ynison_state.PlayerQueueQueueWaveQueueEntityOptionsPhonotekaSource
Класс, представляющий фонотечный источник попадания трека в очередь.
- 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
Класс, представляющий изначальную сущность очереди (устаревший).
- class yandex_music.ynison.models.ynison_state.PlayerQueuePlayerQueueOptions
Класс, представляющий дополнительные параметры очереди (устаревший).
- 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
Класс, представляющий настройки плеера.
- class yandex_music.ynison.models.ynison_state.Device
Класс, представляющий устройство.
- class yandex_music.ynison.models.ynison_state.DeviceVolume
Класс, представляющий состояние громкости устройства.
- volume
Громкость в интервале
[0.0; 1.0]. Значение тесно связано с[DeviceCapabilities.volume_granularity]; ожидается округление мантиссы до 4 знаков при делении1.0на число шагов шкалы.- Type:
float
- class yandex_music.ynison.models.ynison_state.DeviceInfo
Класс, представляющий информацию об устройстве.
- 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
Прогресс проигрываемой сущности в миллисекундах, в интервале
[0; длина]. Для infinite-очередей равен0.- Type:
int
- duration_ms
Длительность проигрываемой сущности в миллисекундах. Для infinite-очередей равна
0.- Type:
int
- class yandex_music.ynison.models.ynison_state.PlayerQueueInject
Класс, представляющий состояние проигрывания инжектируемой в очередь сущности.
Инжектироваться может шот, преролл и т.п.
- class yandex_music.ynison.models.ynison_state.PlayerQueueInjectPlayable
Класс, представляющий инжектируемую в очередь сущность.
- class yandex_music.ynison.models.ynison_state.PlayerState
Класс, представляющий состояние плеера.
- class yandex_music.ynison.models.ynison_state.PutYnisonStateRequest
Класс, представляющий запрос на обновление состояния Ynison.
Клиент отправляет на сервер один из параметров в зависимости от произошедшего события.
- update_volume
Обновить громкость (устаревшее, см.
update_volume_info).
- update_player_queue_inject
Обновить состояние проигрывания инжектируемой сущности (в oneof
parameters).
- class yandex_music.ynison.models.ynison_state.PutYnisonStateResponse
Класс, представляющий ответ сервера на обновление состояния Ynison.
Сервер отправляет фрейм клиенту в трёх случаях: в ответ на
PutYnisonStateRequest, меняющий состояние на сервере; при обновлении на другом клиенте, которое нужно транслировать всем подключённым устройствам; при изменении списка устройств.
- class yandex_music.ynison.models.ynison_state.UpdatePlayerQueueInject
Класс, представляющий обновление состояния инжектируемой в очередь сущности.
- class yandex_music.ynison.models.ynison_state.UpdateActiveDevice
Класс, представляющий обновление активного устройства.
Отправляется при выборе пользователем устройства, которое должно проигрывать звук.
- class yandex_music.ynison.models.ynison_state.UpdatePlayingStatus
Класс, представляющий обновление статуса воспроизведения.
Отправляется при старте, паузе, перемотке или изменении скорости воспроизведения.
- class yandex_music.ynison.models.ynison_state.UpdateVolume
Класс, представляющий обновление уровня громкости (устаревший).
См.
UpdateVolumeInfo.
- class yandex_music.ynison.models.ynison_state.UpdateVolumeInfo
Класс, представляющий обновление громкости устройства.
- class yandex_music.ynison.models.ynison_state.UpdatePlayerState
Класс, представляющий обновление состояния плеера.
Отправляется при старте новой очереди, её обновлении (добавление/удаление сущности) и изменении режима повтора/шаффла.
- class yandex_music.ynison.models.ynison_state.UpdateFullState
Класс, представляющий обновление полного состояния проигрывания и устройств.
Отправляется при холодном старте, выключении оффлайн-режима и появлении сети после её отключения.
- class yandex_music.ynison.models.ynison_state.UpdateSessionParams
Класс, представляющий обновление поведения сервера в отношении устройства в рамках сессии.
Параметры сбрасываются при переподключении.
- class yandex_music.ynison.models.ynison_state.UpdateDevice
Класс, представляющий информацию об устройстве, передаваемую самим устройством на сервер.
- class yandex_music.ynison.models.ynison_state.SyncStateFromEOV
Класс, представляющий запрос синхронизации с сервисом ЕОВ (единой очереди воспроизведения).
Запрос синхронизации может быть отклонён сервером, если текущее устройство не активно и не получило активности в результате вызова этого метода.
Сценарий обновления:
Бэкенд проверяет активность устройства и делает его активным, если требуется (см.
PutYnisonStateRequestActivityInterceptionType).Если устройство не является активным после шага 1, команда тихо игнорируется.
Бэкенд получает список очередей из ЕОВ.
Если id последней очереди в списке совпадает с
actual_queue_id, обновление не произойдёт — переход к пункту 6.Пробуем обновить стейт на основании ЕОВ. Новое состояние плеера будет содержать
[UpdateVersion#device_id], отличный от id устройства-отправителя.Если стейт был обновлён или сменилось активное устройство — рассылаем эвент всем устройствам. Иначе выходим без событий и ошибок.