Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants for the DLNA MediaServer integration."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Mapping
6 import logging
7 from typing import Final
8 
9 from homeassistant.components.media_player import MediaClass
10 
11 LOGGER = logging.getLogger(__package__)
12 
13 DOMAIN: Final = "dlna_dms"
14 DEFAULT_NAME: Final = "DLNA Media Server"
15 
16 CONF_SOURCE_ID: Final = "source_id"
17 CONFIG_VERSION: Final = 1
18 
19 SOURCE_SEP: Final = "/"
20 ROOT_OBJECT_ID: Final = "0"
21 PATH_SEP: Final = "/"
22 PATH_SEARCH_FLAG: Final = "?"
23 PATH_OBJECT_ID_FLAG: Final = ":"
24 # Only request the metadata needed to build a browse response
25 DLNA_BROWSE_FILTER: Final = [
26  "id",
27  "upnp:class",
28  "dc:title",
29  "res",
30  "@childCount",
31  "upnp:albumArtURI",
32 ]
33 # Get all metadata when resolving, for the use of media_players
34 DLNA_RESOLVE_FILTER: Final = "*"
35 # Metadata needed to resolve a path
36 DLNA_PATH_FILTER: Final = ["id", "upnp:class", "dc:title"]
37 DLNA_SORT_CRITERIA: Final = ["+upnp:class", "+upnp:originalTrackNumber", "+dc:title"]
38 
39 PROTOCOL_HTTP: Final = "http-get"
40 PROTOCOL_RTSP: Final = "rtsp-rtp-udp"
41 PROTOCOL_ANY: Final = "*"
42 STREAMABLE_PROTOCOLS: Final = [PROTOCOL_HTTP, PROTOCOL_RTSP, PROTOCOL_ANY]
43 
44 # Map UPnP object class to media_player media class
45 MEDIA_CLASS_MAP: Mapping[str, MediaClass] = {
46  "object": MediaClass.URL,
47  "object.item": MediaClass.URL,
48  "object.item.imageItem": MediaClass.IMAGE,
49  "object.item.imageItem.photo": MediaClass.IMAGE,
50  "object.item.audioItem": MediaClass.MUSIC,
51  "object.item.audioItem.musicTrack": MediaClass.MUSIC,
52  "object.item.audioItem.audioBroadcast": MediaClass.MUSIC,
53  "object.item.audioItem.audioBook": MediaClass.PODCAST,
54  "object.item.videoItem": MediaClass.VIDEO,
55  "object.item.videoItem.movie": MediaClass.MOVIE,
56  "object.item.videoItem.videoBroadcast": MediaClass.TV_SHOW,
57  "object.item.videoItem.musicVideoClip": MediaClass.VIDEO,
58  "object.item.playlistItem": MediaClass.TRACK,
59  "object.item.textItem": MediaClass.URL,
60  "object.item.bookmarkItem": MediaClass.URL,
61  "object.item.epgItem": MediaClass.EPISODE,
62  "object.item.epgItem.audioProgram": MediaClass.MUSIC,
63  "object.item.epgItem.videoProgram": MediaClass.VIDEO,
64  "object.container": MediaClass.DIRECTORY,
65  "object.container.person": MediaClass.ARTIST,
66  "object.container.person.musicArtist": MediaClass.ARTIST,
67  "object.container.playlistContainer": MediaClass.PLAYLIST,
68  "object.container.album": MediaClass.ALBUM,
69  "object.container.album.musicAlbum": MediaClass.ALBUM,
70  "object.container.album.photoAlbum": MediaClass.ALBUM,
71  "object.container.genre": MediaClass.GENRE,
72  "object.container.genre.musicGenre": MediaClass.GENRE,
73  "object.container.genre.movieGenre": MediaClass.GENRE,
74  "object.container.channelGroup": MediaClass.CHANNEL,
75  "object.container.channelGroup.audioChannelGroup": MediaClass.CHANNEL,
76  "object.container.channelGroup.videoChannelGroup": MediaClass.CHANNEL,
77  "object.container.epgContainer": MediaClass.DIRECTORY,
78  "object.container.storageSystem": MediaClass.DIRECTORY,
79  "object.container.storageVolume": MediaClass.DIRECTORY,
80  "object.container.storageFolder": MediaClass.DIRECTORY,
81  "object.container.bookmarkFolder": MediaClass.DIRECTORY,
82 }