/
/
/
1"""Constants for the Jellyfin integration."""
2
3from typing import Final
4
5from aiojellyfin import ImageType as JellyImageType
6from aiojellyfin import ItemFields
7from music_assistant_models.enums import ImageType, MediaType
8from music_assistant_models.media_items import ItemMapping
9
10from music_assistant.constants import UNKNOWN_ARTIST
11
12DOMAIN: Final = "jellyfin"
13
14COLLECTION_TYPE_MOVIES: Final = "movies"
15COLLECTION_TYPE_MUSIC: Final = "music"
16COLLECTION_TYPE_TVSHOWS: Final = "tvshows"
17
18CONF_CLIENT_DEVICE_ID: Final = "client_device_id"
19
20DEFAULT_NAME: Final = "Jellyfin"
21
22ITEM_KEY_COLLECTION_TYPE: Final = "CollectionType"
23ITEM_KEY_ID: Final = "Id"
24ITEM_KEY_IMAGE_TAGS: Final = "ImageTags"
25ITEM_KEY_INDEX_NUMBER: Final = "IndexNumber"
26ITEM_KEY_MEDIA_SOURCES: Final = "MediaSources"
27ITEM_KEY_MEDIA_TYPE: Final = "MediaType"
28ITEM_KEY_MEDIA_STREAMS: Final = "MediaStreams"
29ITEM_KEY_MEDIA_CHANNELS: Final = "Channels"
30ITEM_KEY_MEDIA_CODEC: Final = "Codec"
31ITEM_KEY_NAME: Final = "Name"
32ITEM_KEY_PROVIDER_IDS: Final = "ProviderIds"
33ITEM_KEY_PRODUCTION_YEAR: Final = "ProductionYear"
34ITEM_KEY_OVERVIEW: Final = "Overview"
35ITEM_KEY_MUSICBRAINZ_RELEASE_GROUP: Final = "MusicBrainzReleaseGroup"
36ITEM_KEY_MUSICBRAINZ_ARTIST: Final = "MusicBrainzArtist"
37ITEM_KEY_MUSICBRAINZ_ALBUM: Final = "MusicBrainzAlbum"
38ITEM_KEY_MUSICBRAINZ_TRACK: Final = "MusicBrainzTrack"
39ITEM_KEY_SORT_NAME: Final = "SortName"
40ITEM_KEY_ALBUM_ARTIST: Final = "AlbumArtist"
41ITEM_KEY_ALBUM_ARTISTS: Final = "AlbumArtists"
42ITEM_KEY_ALBUM: Final = "Album"
43ITEM_KEY_ALBUM_ID: Final = "AlbumId"
44ITEM_KEY_ARTIST_ITEMS: Final = "ArtistItems"
45ITEM_KEY_CAN_DOWNLOAD: Final = "CanDownload"
46ITEM_KEY_PARENT_INDEX_NUM: Final = "ParentIndexNumber"
47ITEM_KEY_RUNTIME_TICKS: Final = "RunTimeTicks"
48ITEM_KEY_USER_DATA: Final = "UserData"
49
50ITEM_TYPE_AUDIO: Final = "Audio"
51ITEM_TYPE_LIBRARY: Final = "CollectionFolder"
52
53USER_DATA_KEY_IS_FAVORITE: Final = "IsFavorite"
54
55MAX_IMAGE_WIDTH: Final = 500
56MAX_STREAMING_BITRATE: Final = "140000000"
57
58MEDIA_SOURCE_KEY_PATH: Final = "Path"
59
60MEDIA_TYPE_AUDIO: Final = "Audio"
61MEDIA_TYPE_NONE: Final = ""
62
63SUPPORTED_COLLECTION_TYPES: Final = [COLLECTION_TYPE_MUSIC]
64
65SUPPORTED_CONTAINER_FORMATS: Final = "ogg,flac,mp3,aac,mpeg,alac,wav,aiff,wma,m4a,m4b,dsf,opus,wv"
66
67PLAYABLE_ITEM_TYPES: Final = [ITEM_TYPE_AUDIO]
68
69ARTIST_FIELDS: Final = [
70 ItemFields.Overview,
71 ItemFields.ProviderIds,
72 ItemFields.SortName,
73]
74ALBUM_FIELDS: Final = [
75 ItemFields.Overview,
76 ItemFields.ProviderIds,
77 ItemFields.SortName,
78]
79TRACK_FIELDS: Final = [
80 ItemFields.ProviderIds,
81 ItemFields.CanDownload,
82 ItemFields.SortName,
83 ItemFields.MediaSources,
84 ItemFields.MediaStreams,
85]
86
87USER_APP_NAME: Final = "Music Assistant"
88USER_AGENT: Final = "Music-Assistant-1.0"
89
90UNKNOWN_ARTIST_MAPPING: Final = ItemMapping(
91 media_type=MediaType.ARTIST, item_id=UNKNOWN_ARTIST, provider=DOMAIN, name=UNKNOWN_ARTIST
92)
93
94MEDIA_IMAGE_TYPES: Final = {
95 JellyImageType.Primary: ImageType.THUMB,
96 JellyImageType.Logo: ImageType.LOGO,
97}
98