Files
HomeAssistantVS/custom_components/mass_queue/schemas.py
T
2026-07-17 10:12:15 -04:00

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]),
},
)