1 """Constants for the DLNA MediaServer integration."""
3 from __future__
import annotations
5 from collections.abc
import Mapping
7 from typing
import Final
11 LOGGER = logging.getLogger(__package__)
13 DOMAIN: Final =
"dlna_dms"
14 DEFAULT_NAME: Final =
"DLNA Media Server"
16 CONF_SOURCE_ID: Final =
"source_id"
17 CONFIG_VERSION: Final = 1
19 SOURCE_SEP: Final =
"/"
20 ROOT_OBJECT_ID: Final =
"0"
22 PATH_SEARCH_FLAG: Final =
"?"
23 PATH_OBJECT_ID_FLAG: Final =
":"
25 DLNA_BROWSE_FILTER: Final = [
34 DLNA_RESOLVE_FILTER: Final =
"*"
36 DLNA_PATH_FILTER: Final = [
"id",
"upnp:class",
"dc:title"]
37 DLNA_SORT_CRITERIA: Final = [
"+upnp:class",
"+upnp:originalTrackNumber",
"+dc:title"]
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]
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,