mirror of https://github.com/home-assistant/core
290 lines
10 KiB
Python
290 lines
10 KiB
Python
"""Provides the constants needed for component."""
|
|
|
|
from enum import IntFlag, StrEnum
|
|
from functools import partial
|
|
|
|
from homeassistant.helpers.deprecation import (
|
|
DeprecatedConstantEnum,
|
|
all_with_deprecated_constants,
|
|
check_if_deprecated_constant,
|
|
dir_with_deprecated_constants,
|
|
)
|
|
|
|
# How long our auth signature on the content should be valid for
|
|
CONTENT_AUTH_EXPIRY_TIME = 3600 * 24
|
|
|
|
ATTR_APP_ID = "app_id"
|
|
ATTR_APP_NAME = "app_name"
|
|
ATTR_ENTITY_PICTURE_LOCAL = "entity_picture_local"
|
|
ATTR_GROUP_MEMBERS = "group_members"
|
|
ATTR_INPUT_SOURCE = "source"
|
|
ATTR_INPUT_SOURCE_LIST = "source_list"
|
|
ATTR_MEDIA_ANNOUNCE = "announce"
|
|
ATTR_MEDIA_ALBUM_ARTIST = "media_album_artist"
|
|
ATTR_MEDIA_ALBUM_NAME = "media_album_name"
|
|
ATTR_MEDIA_ARTIST = "media_artist"
|
|
ATTR_MEDIA_CHANNEL = "media_channel"
|
|
ATTR_MEDIA_CONTENT_ID = "media_content_id"
|
|
ATTR_MEDIA_CONTENT_TYPE = "media_content_type"
|
|
ATTR_MEDIA_DURATION = "media_duration"
|
|
ATTR_MEDIA_ENQUEUE = "enqueue"
|
|
ATTR_MEDIA_EXTRA = "extra"
|
|
ATTR_MEDIA_EPISODE = "media_episode"
|
|
ATTR_MEDIA_PLAYLIST = "media_playlist"
|
|
ATTR_MEDIA_POSITION = "media_position"
|
|
ATTR_MEDIA_POSITION_UPDATED_AT = "media_position_updated_at"
|
|
ATTR_MEDIA_REPEAT = "repeat"
|
|
ATTR_MEDIA_SEASON = "media_season"
|
|
ATTR_MEDIA_SEEK_POSITION = "seek_position"
|
|
ATTR_MEDIA_SERIES_TITLE = "media_series_title"
|
|
ATTR_MEDIA_SHUFFLE = "shuffle"
|
|
ATTR_MEDIA_TITLE = "media_title"
|
|
ATTR_MEDIA_TRACK = "media_track"
|
|
ATTR_MEDIA_VOLUME_LEVEL = "volume_level"
|
|
ATTR_MEDIA_VOLUME_MUTED = "is_volume_muted"
|
|
ATTR_SOUND_MODE = "sound_mode"
|
|
ATTR_SOUND_MODE_LIST = "sound_mode_list"
|
|
|
|
DOMAIN = "media_player"
|
|
|
|
|
|
class MediaPlayerState(StrEnum):
|
|
"""State of media player entities."""
|
|
|
|
OFF = "off"
|
|
ON = "on"
|
|
IDLE = "idle"
|
|
PLAYING = "playing"
|
|
PAUSED = "paused"
|
|
STANDBY = "standby"
|
|
BUFFERING = "buffering"
|
|
|
|
|
|
class MediaClass(StrEnum):
|
|
"""Media class for media player entities."""
|
|
|
|
ALBUM = "album"
|
|
APP = "app"
|
|
ARTIST = "artist"
|
|
CHANNEL = "channel"
|
|
COMPOSER = "composer"
|
|
CONTRIBUTING_ARTIST = "contributing_artist"
|
|
DIRECTORY = "directory"
|
|
EPISODE = "episode"
|
|
GAME = "game"
|
|
GENRE = "genre"
|
|
IMAGE = "image"
|
|
MOVIE = "movie"
|
|
MUSIC = "music"
|
|
PLAYLIST = "playlist"
|
|
PODCAST = "podcast"
|
|
SEASON = "season"
|
|
TRACK = "track"
|
|
TV_SHOW = "tv_show"
|
|
URL = "url"
|
|
VIDEO = "video"
|
|
|
|
|
|
# These MEDIA_CLASS_* constants are deprecated as of Home Assistant 2022.10.
|
|
# Please use the MediaClass enum instead.
|
|
_DEPRECATED_MEDIA_CLASS_ALBUM = DeprecatedConstantEnum(MediaClass.ALBUM, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_APP = DeprecatedConstantEnum(MediaClass.APP, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_ARTIST = DeprecatedConstantEnum(MediaClass.ARTIST, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_CHANNEL = DeprecatedConstantEnum(MediaClass.CHANNEL, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_COMPOSER = DeprecatedConstantEnum(
|
|
MediaClass.COMPOSER, "2025.10"
|
|
)
|
|
_DEPRECATED_MEDIA_CLASS_CONTRIBUTING_ARTIST = DeprecatedConstantEnum(
|
|
MediaClass.CONTRIBUTING_ARTIST, "2025.10"
|
|
)
|
|
_DEPRECATED_MEDIA_CLASS_DIRECTORY = DeprecatedConstantEnum(
|
|
MediaClass.DIRECTORY, "2025.10"
|
|
)
|
|
_DEPRECATED_MEDIA_CLASS_EPISODE = DeprecatedConstantEnum(MediaClass.EPISODE, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_GAME = DeprecatedConstantEnum(MediaClass.GAME, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_GENRE = DeprecatedConstantEnum(MediaClass.GENRE, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_IMAGE = DeprecatedConstantEnum(MediaClass.IMAGE, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_MOVIE = DeprecatedConstantEnum(MediaClass.MOVIE, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_MUSIC = DeprecatedConstantEnum(MediaClass.MUSIC, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_PLAYLIST = DeprecatedConstantEnum(
|
|
MediaClass.PLAYLIST, "2025.10"
|
|
)
|
|
_DEPRECATED_MEDIA_CLASS_PODCAST = DeprecatedConstantEnum(MediaClass.PODCAST, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_SEASON = DeprecatedConstantEnum(MediaClass.SEASON, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_TRACK = DeprecatedConstantEnum(MediaClass.TRACK, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_TV_SHOW = DeprecatedConstantEnum(MediaClass.TV_SHOW, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_URL = DeprecatedConstantEnum(MediaClass.URL, "2025.10")
|
|
_DEPRECATED_MEDIA_CLASS_VIDEO = DeprecatedConstantEnum(MediaClass.VIDEO, "2025.10")
|
|
|
|
|
|
class MediaType(StrEnum):
|
|
"""Media type for media player entities."""
|
|
|
|
ALBUM = "album"
|
|
APP = "app"
|
|
APPS = "apps"
|
|
ARTIST = "artist"
|
|
CHANNEL = "channel"
|
|
CHANNELS = "channels"
|
|
COMPOSER = "composer"
|
|
CONTRIBUTING_ARTIST = "contributing_artist"
|
|
EPISODE = "episode"
|
|
GAME = "game"
|
|
GENRE = "genre"
|
|
IMAGE = "image"
|
|
MOVIE = "movie"
|
|
MUSIC = "music"
|
|
PLAYLIST = "playlist"
|
|
PODCAST = "podcast"
|
|
SEASON = "season"
|
|
TRACK = "track"
|
|
TVSHOW = "tvshow"
|
|
URL = "url"
|
|
VIDEO = "video"
|
|
|
|
|
|
# These MEDIA_TYPE_* constants are deprecated as of Home Assistant 2022.10.
|
|
# Please use the MediaType enum instead.
|
|
_DEPRECATED_MEDIA_TYPE_ALBUM = DeprecatedConstantEnum(MediaType.ALBUM, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_APP = DeprecatedConstantEnum(MediaType.APP, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_APPS = DeprecatedConstantEnum(MediaType.APPS, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_ARTIST = DeprecatedConstantEnum(MediaType.ARTIST, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_CHANNEL = DeprecatedConstantEnum(MediaType.CHANNEL, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_CHANNELS = DeprecatedConstantEnum(MediaType.CHANNELS, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_COMPOSER = DeprecatedConstantEnum(MediaType.COMPOSER, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_CONTRIBUTING_ARTIST = DeprecatedConstantEnum(
|
|
MediaType.CONTRIBUTING_ARTIST, "2025.10"
|
|
)
|
|
_DEPRECATED_MEDIA_TYPE_EPISODE = DeprecatedConstantEnum(MediaType.EPISODE, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_GAME = DeprecatedConstantEnum(MediaType.GAME, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_GENRE = DeprecatedConstantEnum(MediaType.GENRE, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_IMAGE = DeprecatedConstantEnum(MediaType.IMAGE, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_MOVIE = DeprecatedConstantEnum(MediaType.MOVIE, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_MUSIC = DeprecatedConstantEnum(MediaType.MUSIC, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_PLAYLIST = DeprecatedConstantEnum(MediaType.PLAYLIST, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_PODCAST = DeprecatedConstantEnum(MediaType.PODCAST, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_SEASON = DeprecatedConstantEnum(MediaType.SEASON, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_TRACK = DeprecatedConstantEnum(MediaType.TRACK, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_TVSHOW = DeprecatedConstantEnum(MediaType.TVSHOW, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_URL = DeprecatedConstantEnum(MediaType.URL, "2025.10")
|
|
_DEPRECATED_MEDIA_TYPE_VIDEO = DeprecatedConstantEnum(MediaType.VIDEO, "2025.10")
|
|
|
|
|
|
SERVICE_CLEAR_PLAYLIST = "clear_playlist"
|
|
SERVICE_JOIN = "join"
|
|
SERVICE_PLAY_MEDIA = "play_media"
|
|
SERVICE_SELECT_SOUND_MODE = "select_sound_mode"
|
|
SERVICE_SELECT_SOURCE = "select_source"
|
|
SERVICE_UNJOIN = "unjoin"
|
|
|
|
|
|
class RepeatMode(StrEnum):
|
|
"""Repeat mode for media player entities."""
|
|
|
|
ALL = "all"
|
|
OFF = "off"
|
|
ONE = "one"
|
|
|
|
|
|
# These REPEAT_MODE_* constants are deprecated as of Home Assistant 2022.10.
|
|
# Please use the RepeatMode enum instead.
|
|
_DEPRECATED_REPEAT_MODE_ALL = DeprecatedConstantEnum(RepeatMode.ALL, "2025.10")
|
|
_DEPRECATED_REPEAT_MODE_OFF = DeprecatedConstantEnum(RepeatMode.OFF, "2025.10")
|
|
_DEPRECATED_REPEAT_MODE_ONE = DeprecatedConstantEnum(RepeatMode.ONE, "2025.10")
|
|
REPEAT_MODES = [cls.value for cls in RepeatMode]
|
|
|
|
|
|
class MediaPlayerEntityFeature(IntFlag):
|
|
"""Supported features of the media player entity."""
|
|
|
|
PAUSE = 1
|
|
SEEK = 2
|
|
VOLUME_SET = 4
|
|
VOLUME_MUTE = 8
|
|
PREVIOUS_TRACK = 16
|
|
NEXT_TRACK = 32
|
|
|
|
TURN_ON = 128
|
|
TURN_OFF = 256
|
|
PLAY_MEDIA = 512
|
|
VOLUME_STEP = 1024
|
|
SELECT_SOURCE = 2048
|
|
STOP = 4096
|
|
CLEAR_PLAYLIST = 8192
|
|
PLAY = 16384
|
|
SHUFFLE_SET = 32768
|
|
SELECT_SOUND_MODE = 65536
|
|
BROWSE_MEDIA = 131072
|
|
REPEAT_SET = 262144
|
|
GROUPING = 524288
|
|
MEDIA_ANNOUNCE = 1048576
|
|
MEDIA_ENQUEUE = 2097152
|
|
|
|
|
|
# These SUPPORT_* constants are deprecated as of Home Assistant 2022.5.
|
|
# Please use the MediaPlayerEntityFeature enum instead.
|
|
_DEPRECATED_SUPPORT_PAUSE = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.PAUSE, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_SEEK = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.SEEK, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_VOLUME_SET = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.VOLUME_SET, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_VOLUME_MUTE = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.VOLUME_MUTE, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_PREVIOUS_TRACK = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.PREVIOUS_TRACK, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_NEXT_TRACK = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.NEXT_TRACK, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_TURN_ON = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.TURN_ON, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_TURN_OFF = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.TURN_OFF, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_PLAY_MEDIA = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.PLAY_MEDIA, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_VOLUME_STEP = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.VOLUME_STEP, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_SELECT_SOURCE = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.SELECT_SOURCE, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_STOP = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.STOP, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_CLEAR_PLAYLIST = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.CLEAR_PLAYLIST, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_PLAY = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.PLAY, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_SHUFFLE_SET = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.SHUFFLE_SET, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_SELECT_SOUND_MODE = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.SELECT_SOUND_MODE, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_BROWSE_MEDIA = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.BROWSE_MEDIA, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_REPEAT_SET = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.REPEAT_SET, "2025.10"
|
|
)
|
|
_DEPRECATED_SUPPORT_GROUPING = DeprecatedConstantEnum(
|
|
MediaPlayerEntityFeature.GROUPING, "2025.10"
|
|
)
|
|
|
|
# These can be removed if no deprecated constant are in this module anymore
|
|
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
|
|
__dir__ = partial(
|
|
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
|
|
)
|
|
__all__ = all_with_deprecated_constants(globals())
|