music-assistant-server

3.7 KBPY
constants.py
3.7 KB137 lines • python
1"""Constants for Built-in/generic provider."""
2
3from __future__ import annotations
4
5from typing import NotRequired, TypedDict
6
7from music_assistant_models.config_entries import ConfigEntry
8from music_assistant_models.enums import ConfigEntryType, ImageType
9from music_assistant_models.media_items import MediaItemImage
10
11from music_assistant.constants import (
12    CONF_ENTRY_LIBRARY_SYNC_BACK,
13    CONF_ENTRY_LIBRARY_SYNC_PLAYLISTS,
14    CONF_ENTRY_LIBRARY_SYNC_RADIOS,
15    CONF_ENTRY_LIBRARY_SYNC_TRACKS,
16    CONF_ENTRY_PROVIDER_SYNC_INTERVAL_PLAYLISTS,
17    CONF_ENTRY_PROVIDER_SYNC_INTERVAL_RADIOS,
18    CONF_ENTRY_PROVIDER_SYNC_INTERVAL_TRACKS,
19)
20
21
22class StoredItem(TypedDict):
23    """Definition of an media item (for the builtin provider) stored in persistent storage."""
24
25    item_id: str  # url or (locally accessible) file path (or id in case of playlist)
26    name: str
27    image_url: NotRequired[str]
28    last_updated: NotRequired[int]
29
30
31CONF_KEY_RADIOS = "stored_radios"
32CONF_KEY_TRACKS = "stored_tracks"
33CONF_KEY_PLAYLISTS = "stored_playlists"
34
35
36ALL_FAVORITE_TRACKS = "all_favorite_tracks"
37RANDOM_ARTIST = "random_artist"
38RANDOM_ALBUM = "random_album"
39RANDOM_TRACKS = "random_tracks"
40RECENTLY_PLAYED = "recently_played"
41RECENTLY_ADDED_TRACKS = "recently_added_tracks"
42
43BUILTIN_PLAYLISTS = {
44    ALL_FAVORITE_TRACKS: "All favorited tracks",
45    RANDOM_ARTIST: "Random Artist (from library)",
46    RANDOM_ALBUM: "Random Album (from library)",
47    RANDOM_TRACKS: "500 Random tracks (from library)",
48    RECENTLY_PLAYED: "Recently played tracks",
49    RECENTLY_ADDED_TRACKS: "Recently added tracks",
50}
51BUILTIN_PLAYLISTS_ENTRIES = [
52    ConfigEntry(
53        key=key,
54        type=ConfigEntryType.BOOLEAN,
55        label=name,
56        default_value=True,
57        category="generic",
58    )
59    for key, name in BUILTIN_PLAYLISTS.items()
60]
61
62COLLAGE_IMAGE_PLAYLISTS = (ALL_FAVORITE_TRACKS, RANDOM_TRACKS)
63
64DEFAULT_THUMB = MediaItemImage(
65    type=ImageType.THUMB,
66    path="logo.png",
67    provider="builtin",
68    remotely_accessible=False,
69)
70
71DEFAULT_FANART = MediaItemImage(
72    type=ImageType.FANART,
73    path="fanart.jpg",
74    provider="builtin",
75    remotely_accessible=False,
76)
77
78CONF_ENTRY_LIBRARY_SYNC_TRACKS_HIDDEN = ConfigEntry.from_dict(
79    {
80        **CONF_ENTRY_LIBRARY_SYNC_TRACKS.to_dict(),
81        "hidden": True,
82        "default_value": True,
83    }
84)
85CONF_ENTRY_LIBRARY_SYNC_PLAYLISTS_HIDDEN = ConfigEntry.from_dict(
86    {
87        **CONF_ENTRY_LIBRARY_SYNC_PLAYLISTS.to_dict(),
88        "hidden": True,
89        "default_value": True,
90    }
91)
92CONF_ENTRY_LIBRARY_SYNC_TRACKS_HIDDEN = ConfigEntry.from_dict(
93    {
94        **CONF_ENTRY_LIBRARY_SYNC_TRACKS.to_dict(),
95        "hidden": True,
96        "default_value": True,
97    }
98)
99CONF_ENTRY_LIBRARY_SYNC_RADIOS_HIDDEN = ConfigEntry.from_dict(
100    {
101        **CONF_ENTRY_LIBRARY_SYNC_RADIOS.to_dict(),
102        "hidden": True,
103        "default_value": True,
104    }
105)
106CONF_ENTRY_PROVIDER_SYNC_INTERVAL_PLAYLISTS_MOD = ConfigEntry.from_dict(
107    {
108        **CONF_ENTRY_PROVIDER_SYNC_INTERVAL_PLAYLISTS.to_dict(),
109        "default_value": 180,
110        "label": "Playlists refresh interval",
111        "description": "The interval at which the builtin generated playlists are refreshed.",
112    }
113)
114
115
116CONF_ENTRY_PROVIDER_SYNC_INTERVAL_TRACKS_HIDDEN = ConfigEntry.from_dict(
117    {
118        **CONF_ENTRY_PROVIDER_SYNC_INTERVAL_TRACKS.to_dict(),
119        "hidden": True,
120        "default_value": 180,
121    }
122)
123CONF_ENTRY_PROVIDER_SYNC_INTERVAL_RADIOS_HIDDEN = ConfigEntry.from_dict(
124    {
125        **CONF_ENTRY_PROVIDER_SYNC_INTERVAL_RADIOS.to_dict(),
126        "hidden": True,
127        "default_value": 180,
128    }
129)
130CONF_ENTRY_LIBRARY_SYNC_BACK_HIDDEN = ConfigEntry.from_dict(
131    {
132        **CONF_ENTRY_LIBRARY_SYNC_BACK.to_dict(),
133        "hidden": True,
134        "default_value": True,
135    }
136)
137