182 lines
4.4 KiB
Python
182 lines
4.4 KiB
Python
# ty:ignore[unresolved-import]
|
|
"""Schemas."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import voluptuous as vol
|
|
from homeassistant.helpers import config_validation as cv
|
|
|
|
from .const import (
|
|
ATTR_COMMAND,
|
|
ATTR_CONFIG_ENTRY_ID,
|
|
ATTR_DATA,
|
|
ATTR_DURATION,
|
|
ATTR_FAVORITE,
|
|
ATTR_LIMIT,
|
|
ATTR_LIMIT_AFTER,
|
|
ATTR_LIMIT_BEFORE,
|
|
ATTR_LOCAL_IMAGE_ENCODED,
|
|
ATTR_MEDIA_ALBUM_NAME,
|
|
ATTR_MEDIA_ARTIST,
|
|
ATTR_MEDIA_CONTENT_ID,
|
|
ATTR_MEDIA_IMAGE,
|
|
ATTR_MEDIA_TITLE,
|
|
ATTR_OFFSET,
|
|
ATTR_PAGE,
|
|
ATTR_PLAYER_ENTITY,
|
|
ATTR_PLAYLIST_ID,
|
|
ATTR_POSITION,
|
|
ATTR_POSITIONS_TO_REMOVE,
|
|
ATTR_PROVIDERS,
|
|
ATTR_QUEUE_ITEM_ID,
|
|
ATTR_QUEUE_ITEMS,
|
|
ATTR_URI,
|
|
ATTR_VOLUME_LEVEL,
|
|
)
|
|
|
|
CLEAR_QUEUE_FROM_HERE_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
},
|
|
)
|
|
|
|
GET_GROUP_VOLUME_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
},
|
|
)
|
|
|
|
QUEUE_ITEM_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_QUEUE_ITEM_ID): str,
|
|
vol.Required(ATTR_MEDIA_TITLE): str,
|
|
vol.Required(ATTR_MEDIA_ALBUM_NAME): str,
|
|
vol.Required(ATTR_MEDIA_ARTIST): str,
|
|
vol.Required(ATTR_MEDIA_CONTENT_ID): str,
|
|
vol.Required(ATTR_MEDIA_IMAGE): str,
|
|
vol.Required(ATTR_FAVORITE): bool,
|
|
vol.Optional(ATTR_LOCAL_IMAGE_ENCODED): str,
|
|
},
|
|
)
|
|
|
|
TRACK_ITEM_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_MEDIA_TITLE): str,
|
|
vol.Optional(ATTR_MEDIA_ALBUM_NAME): str,
|
|
vol.Optional(ATTR_MEDIA_ARTIST): str,
|
|
vol.Required(ATTR_MEDIA_CONTENT_ID): str,
|
|
vol.Required(ATTR_MEDIA_IMAGE): str,
|
|
vol.Required(ATTR_FAVORITE): bool,
|
|
vol.Required(ATTR_DURATION): vol.Any(int, None),
|
|
vol.Optional(ATTR_LOCAL_IMAGE_ENCODED): str,
|
|
vol.Optional(ATTR_POSITION): str,
|
|
},
|
|
)
|
|
|
|
QUEUE_DETAILS_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_QUEUE_ITEMS): vol.All(
|
|
cv.ensure_list,
|
|
[vol.Schema(QUEUE_ITEM_SCHEMA)],
|
|
),
|
|
},
|
|
)
|
|
|
|
QUEUE_ITEMS_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Optional(ATTR_OFFSET): int,
|
|
vol.Optional(ATTR_LIMIT): int,
|
|
vol.Optional(ATTR_LIMIT_BEFORE): int,
|
|
vol.Optional(ATTR_LIMIT_AFTER): int,
|
|
},
|
|
)
|
|
PLAY_QUEUE_ITEM_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Required(ATTR_QUEUE_ITEM_ID): str,
|
|
},
|
|
)
|
|
REMOVE_QUEUE_ITEM_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Required(ATTR_QUEUE_ITEM_ID): str,
|
|
},
|
|
)
|
|
MOVE_QUEUE_ITEM_UP_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Required(ATTR_QUEUE_ITEM_ID): str,
|
|
},
|
|
)
|
|
MOVE_QUEUE_ITEM_DOWN_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Required(ATTR_QUEUE_ITEM_ID): str,
|
|
},
|
|
)
|
|
MOVE_QUEUE_ITEM_NEXT_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Required(ATTR_QUEUE_ITEM_ID): str,
|
|
},
|
|
)
|
|
|
|
SEND_COMMAND_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_COMMAND): str,
|
|
vol.Optional(ATTR_DATA, default={}): dict,
|
|
vol.Required(ATTR_CONFIG_ENTRY_ID): str,
|
|
},
|
|
)
|
|
|
|
GET_TRACKS_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_CONFIG_ENTRY_ID): str,
|
|
vol.Required(ATTR_URI): str,
|
|
vol.Optional(ATTR_PAGE): int,
|
|
},
|
|
)
|
|
|
|
GET_PODCAST_EPISODES_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_CONFIG_ENTRY_ID): str,
|
|
vol.Required(ATTR_URI): str,
|
|
},
|
|
)
|
|
|
|
GET_DATA_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_CONFIG_ENTRY_ID): str,
|
|
vol.Required(ATTR_URI): str,
|
|
},
|
|
)
|
|
|
|
GET_RECOMMENDATIONS_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Optional(ATTR_PROVIDERS): [str],
|
|
},
|
|
)
|
|
|
|
UNFAVORITE_CURRENT_ITEM_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
},
|
|
)
|
|
|
|
SET_GROUP_VOLUME_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_PLAYER_ENTITY): str,
|
|
vol.Required(ATTR_VOLUME_LEVEL): int,
|
|
},
|
|
)
|
|
|
|
REMOVE_PLAYLIST_TRACKS_SERVICE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_CONFIG_ENTRY_ID): str,
|
|
vol.Required(ATTR_PLAYLIST_ID): vol.Any(int, str),
|
|
vol.Required(ATTR_POSITIONS_TO_REMOVE): vol.Any(int, [int], str, [str]),
|
|
},
|
|
)
|