Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions music_assistant_models/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,20 @@ def _missing_(cls, value: object) -> AlbumType: # noqa: ARG003
return cls.UNKNOWN


class ArtistType(StrEnum):
"""Enum for Artist type."""

SINGER = "singer" # regular music artist
AUTHOR = "author" # author of an audiobook
NARRATOR = "narrator" # narrator of an audiobook
UNKNOWN = "unknown"

@classmethod
def _missing_(cls, value: object) -> ArtistType: # noqa: ARG003
"""Set default enum member if an unknown value is provided."""
return cls.UNKNOWN


class ContentType(StrEnum):
"""Enum with audio content/container types supported by ffmpeg."""

Expand Down Expand Up @@ -546,6 +560,8 @@ class ProviderFeature(StrEnum):
# additional library features
ARTIST_ALBUMS = "artist_albums"
ARTIST_TOPTRACKS = "artist_toptracks"
AUTHOR_AUDIOBOOKS = "author_audiobooks"
NARRATOR_AUDIOBOOKS = "narrator_audiobooks"

# library edit (=add/remove) feature per mediatype
LIBRARY_ARTISTS_EDIT = "library_artists_edit"
Expand Down
7 changes: 4 additions & 3 deletions music_assistant_models/media_items/media_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from mashumaro import DataClassDictMixin

from music_assistant_models.enums import AlbumType, ExternalID, ImageType, MediaType
from music_assistant_models.enums import AlbumType, ArtistType, ExternalID, ImageType, MediaType
from music_assistant_models.errors import InvalidDataError
from music_assistant_models.helpers import (
create_sort_name,
Expand Down Expand Up @@ -202,6 +202,7 @@ class Artist(MediaItem):
__eq__ = _MediaItemBase.__eq__

media_type: MediaType = MediaType.ARTIST
artist_type: ArtistType = ArtistType.SINGER


@dataclass(kw_only=True)
Expand Down Expand Up @@ -307,8 +308,8 @@ class Audiobook(MediaItem):
__eq__ = _MediaItemBase.__eq__

publisher: str | None = None
authors: UniqueList[str] = field(default_factory=UniqueList)
narrators: UniqueList[str] = field(default_factory=UniqueList)
authors: UniqueList[str | Artist] = field(default_factory=UniqueList)
narrators: UniqueList[str | Artist] = field(default_factory=UniqueList)
duration: int = 0
# resume point info
# set to None if unknown/unsupported by provider
Expand Down