music-assistant-server

3 KBPY
constants.py
3 KB96 lines • python
1"""Constants for Audiobookshelf provider."""
2
3from enum import StrEnum
4
5from aioaudiobookshelf.schema.shelf import ShelfId as AbsShelfId
6from aiohttp.client import ClientTimeout
7
8# AIOHTTP
9# we use twice the default values
10AIOHTTP_TIMEOUT = ClientTimeout(total=10 * 60, sock_connect=60)
11
12# CONFIG
13CONF_URL = "url"
14CONF_USERNAME = "username"
15CONF_PASSWORD = "password"
16CONF_OLD_TOKEN = "token"
17CONF_API_TOKEN = "api_token"  # with jwt api token (>= v2.26)
18CONF_VERIFY_SSL = "verify_ssl"
19# optionally hide podcasts with no episodes
20CONF_HIDE_EMPTY_PODCASTS = "hide_empty_podcasts"
21# hls options
22CONF_USE_HLS = "use_session_hls"
23CONF_HLS_FORMATS = "hls_formats"
24HLS_FORMATS_SPLIT = ";"
25HLS_ALL_FORMATS = "all"
26
27# CACHE
28CACHE_CATEGORY_LIBRARIES = 0
29CACHE_KEY_LIBRARIES = "libraries"
30
31
32# BROWSE
33class AbsBrowsePaths(StrEnum):
34    """Path prefixes for browse view."""
35
36    LIBRARIES_BOOK = "lb"
37    LIBRARIES_PODCAST = "lp"
38    AUTHORS = "a"
39    NARRATORS = "n"
40    SERIES = "s"
41    COLLECTIONS = "c"
42    AUDIOBOOKS = "b"
43
44
45class AbsBrowseItemsBookTranslationKey(StrEnum):
46    """translation keys in browse view for books."""
47
48    AUTHORS = "authors"
49    NARRATORS = "narrators"
50    SERIES = "series_plural"
51    COLLECTIONS = "collections"
52    AUDIOBOOKS = "audiobooks"
53
54
55class AbsBrowseItemsPodcastTranslationKey(StrEnum):
56    """Folder names in browse view for podcasts."""
57
58    PODCASTS = "podcasts"
59
60
61ABS_BROWSE_ITEMS_TO_PATH: dict[str, str] = {
62    AbsBrowseItemsBookTranslationKey.AUTHORS: AbsBrowsePaths.AUTHORS,
63    AbsBrowseItemsBookTranslationKey.NARRATORS: AbsBrowsePaths.NARRATORS,
64    AbsBrowseItemsBookTranslationKey.SERIES: AbsBrowsePaths.SERIES,
65    AbsBrowseItemsBookTranslationKey.COLLECTIONS: AbsBrowsePaths.COLLECTIONS,
66    AbsBrowseItemsBookTranslationKey.AUDIOBOOKS: AbsBrowsePaths.AUDIOBOOKS,
67}
68
69ABS_SHELF_ID_ICONS: dict[str, str] = {
70    AbsShelfId.LISTEN_AGAIN: "mdi-book-refresh-outline",
71    AbsShelfId.CONTINUE_LISTENING: "mdi-clock-outline",
72    AbsShelfId.CONTINUE_SERIES: "mdi-play-box-multiple-outline",
73    AbsShelfId.RECOMMENDED: "mdi-lightbulb-outline",
74    AbsShelfId.RECENTLY_ADDED: "mdi-plus-box-multiple-outline",
75    AbsShelfId.EPISODES_RECENTLY_ADDED: "mdi-plus-box-multiple-outline",
76    AbsShelfId.RECENT_SERIES: "mdi-bookshelf",
77    AbsShelfId.NEWEST_AUTHORS: "mdi-plus-box-multiple-outline",
78    AbsShelfId.NEWEST_EPISODES: "mdi-plus-box-multiple-outline",
79    AbsShelfId.DISCOVER: "mdi-magnify",
80}
81
82# for some keys there already is a good MA variant
83# note: recommendation keys are in a subdict
84ABS_SHELF_ID_TRANSLATION_KEY: dict[str, str] = {
85    AbsShelfId.LISTEN_AGAIN: "listen_again",
86    AbsShelfId.CONTINUE_LISTENING: "in_progress_items",
87    AbsShelfId.CONTINUE_SERIES: "in_progress_series",
88    AbsShelfId.RECOMMENDED: "recommended",
89    AbsShelfId.RECENTLY_ADDED: "recently_added",
90    AbsShelfId.EPISODES_RECENTLY_ADDED: "episodes_recently_added",
91    AbsShelfId.RECENT_SERIES: "recent_series",
92    AbsShelfId.NEWEST_AUTHORS: "newest_authors",
93    AbsShelfId.NEWEST_EPISODES: "newest_episodes",
94    AbsShelfId.DISCOVER: "discover",
95}
96