"""
WARNING: AUTOGENERATED FILE
This file was generated by the api_object_generator.py
script. Do not modify this file directly, rather modify the
script or run it on a new API version.
"""

from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import Any, List, Optional

from sublime.server.api_object import APIObject


@dataclass(frozen=True)
class AlbumInfo(APIObject):
    notes: List[str] = field(default_factory=list)
    musicBrainzId: List[str] = field(default_factory=list)
    lastFmUrl: List[str] = field(default_factory=list)
    smallImageUrl: List[str] = field(default_factory=list)
    mediumImageUrl: List[str] = field(default_factory=list)
    largeImageUrl: List[str] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class AverageRating(APIObject, float):
    pass


class MediaType(APIObject, Enum):
    MUSIC = "music"
    PODCAST = "podcast"
    AUDIOBOOK = "audiobook"
    VIDEO = "video"

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class UserRating(APIObject, int):
    pass


@dataclass(frozen=True)
class Child(APIObject):
    id: str
    isDir: bool
    title: str
    value: Optional[str] = None
    parent: Optional[str] = None
    album: Optional[str] = None
    artist: Optional[str] = None
    track: Optional[int] = None
    year: Optional[int] = None
    genre: Optional[str] = None
    coverArt: Optional[str] = None
    size: Optional[int] = None
    contentType: Optional[str] = None
    suffix: Optional[str] = None
    transcodedContentType: Optional[str] = None
    transcodedSuffix: Optional[str] = None
    duration: Optional[int] = None
    bitRate: Optional[int] = None
    path: Optional[str] = None
    isVideo: Optional[bool] = None
    userRating: Optional[UserRating] = None
    averageRating: Optional[AverageRating] = None
    playCount: Optional[int] = None
    discNumber: Optional[int] = None
    created: Optional[datetime] = None
    starred: Optional[datetime] = None
    albumId: Optional[str] = None
    artistId: Optional[str] = None
    type: Optional[MediaType] = None
    bookmarkPosition: Optional[int] = None
    originalWidth: Optional[int] = None
    originalHeight: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class AlbumList(APIObject):
    album: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class AlbumID3(APIObject):
    id: str
    name: str
    songCount: int
    duration: int
    created: datetime
    value: Optional[str] = None
    artist: Optional[str] = None
    artistId: Optional[str] = None
    coverArt: Optional[str] = None
    playCount: Optional[int] = None
    starred: Optional[datetime] = None
    year: Optional[int] = None
    genre: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class AlbumList2(APIObject):
    album: List[AlbumID3] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class AlbumWithSongsID3(APIObject):
    id: str
    name: str
    songCount: int
    duration: int
    created: datetime
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    artist: Optional[str] = None
    artistId: Optional[str] = None
    coverArt: Optional[str] = None
    playCount: Optional[int] = None
    starred: Optional[datetime] = None
    year: Optional[int] = None
    genre: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Artist(APIObject):
    id: str
    name: str
    value: Optional[str] = None
    artistImageUrl: Optional[str] = None
    starred: Optional[datetime] = None
    userRating: Optional[UserRating] = None
    averageRating: Optional[AverageRating] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ArtistInfoBase(APIObject):
    biography: List[str] = field(default_factory=list)
    musicBrainzId: List[str] = field(default_factory=list)
    lastFmUrl: List[str] = field(default_factory=list)
    smallImageUrl: List[str] = field(default_factory=list)
    mediumImageUrl: List[str] = field(default_factory=list)
    largeImageUrl: List[str] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ArtistInfo(APIObject):
    similarArtist: List[Artist] = field(default_factory=list)
    value: Optional[str] = None
    biography: List[str] = field(default_factory=list)
    musicBrainzId: List[str] = field(default_factory=list)
    lastFmUrl: List[str] = field(default_factory=list)
    smallImageUrl: List[str] = field(default_factory=list)
    mediumImageUrl: List[str] = field(default_factory=list)
    largeImageUrl: List[str] = field(default_factory=list)

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ArtistID3(APIObject):
    id: str
    name: str
    albumCount: int
    value: Optional[str] = None
    coverArt: Optional[str] = None
    artistImageUrl: Optional[str] = None
    starred: Optional[datetime] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ArtistInfo2(APIObject):
    similarArtist: List[ArtistID3] = field(default_factory=list)
    value: Optional[str] = None
    biography: List[str] = field(default_factory=list)
    musicBrainzId: List[str] = field(default_factory=list)
    lastFmUrl: List[str] = field(default_factory=list)
    smallImageUrl: List[str] = field(default_factory=list)
    mediumImageUrl: List[str] = field(default_factory=list)
    largeImageUrl: List[str] = field(default_factory=list)

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ArtistWithAlbumsID3(APIObject):
    id: str
    name: str
    albumCount: int
    album: List[AlbumID3] = field(default_factory=list)
    value: Optional[str] = None
    coverArt: Optional[str] = None
    artistImageUrl: Optional[str] = None
    starred: Optional[datetime] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class IndexID3(APIObject):
    name: str
    artist: List[ArtistID3] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ArtistsID3(APIObject):
    ignoredArticles: str
    index: List[IndexID3] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Bookmark(APIObject):
    position: int
    username: str
    created: datetime
    changed: datetime
    entry: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    comment: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Bookmarks(APIObject):
    bookmark: List[Bookmark] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ChatMessage(APIObject):
    username: str
    time: int
    message: str
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ChatMessages(APIObject):
    chatMessage: List[ChatMessage] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Directory(APIObject):
    id: str
    name: str
    child: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    parent: Optional[str] = None
    starred: Optional[datetime] = None
    userRating: Optional[UserRating] = None
    averageRating: Optional[AverageRating] = None
    playCount: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Error(APIObject):
    code: int
    value: Optional[str] = None
    message: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Genre(APIObject):
    songCount: int
    albumCount: int
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Genres(APIObject):
    genre: List[Genre] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Index(APIObject):
    name: str
    artist: List[Artist] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Indexes(APIObject):
    lastModified: int
    ignoredArticles: str
    shortcut: List[Artist] = field(default_factory=list)
    index: List[Index] = field(default_factory=list)
    child: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class InternetRadioStation(APIObject):
    id: str
    name: str
    streamUrl: str
    value: Optional[str] = None
    homePageUrl: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class InternetRadioStations(APIObject):
    internetRadioStation: List[InternetRadioStation] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class JukeboxStatus(APIObject):
    currentIndex: int
    playing: bool
    gain: float
    value: Optional[str] = None
    position: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class JukeboxPlaylist(APIObject):
    currentIndex: int
    playing: bool
    gain: float
    entry: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    position: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class License(APIObject):
    valid: bool
    value: Optional[str] = None
    email: Optional[str] = None
    licenseExpires: Optional[datetime] = None
    trialExpires: Optional[datetime] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Lyrics(APIObject):
    artist: Optional[str] = None
    value: Optional[str] = None
    title: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class MusicFolder(APIObject):
    id: int
    value: Optional[str] = None
    name: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class MusicFolders(APIObject):
    musicFolder: List[MusicFolder] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


class PodcastStatus(APIObject, Enum):
    NEW = "new"
    DOWNLOADING = "downloading"
    COMPLETED = "completed"
    ERROR = "error"
    DELETED = "deleted"
    SKIPPED = "skipped"

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class PodcastEpisode(APIObject):
    channelId: str
    status: PodcastStatus
    id: str
    isDir: bool
    title: str
    streamId: Optional[str] = None
    description: Optional[str] = None
    publishDate: Optional[datetime] = None
    value: Optional[str] = None
    parent: Optional[str] = None
    album: Optional[str] = None
    artist: Optional[str] = None
    track: Optional[int] = None
    year: Optional[int] = None
    genre: Optional[str] = None
    coverArt: Optional[str] = None
    size: Optional[int] = None
    contentType: Optional[str] = None
    suffix: Optional[str] = None
    transcodedContentType: Optional[str] = None
    transcodedSuffix: Optional[str] = None
    duration: Optional[int] = None
    bitRate: Optional[int] = None
    path: Optional[str] = None
    isVideo: Optional[bool] = None
    userRating: Optional[UserRating] = None
    averageRating: Optional[AverageRating] = None
    playCount: Optional[int] = None
    discNumber: Optional[int] = None
    created: Optional[datetime] = None
    starred: Optional[datetime] = None
    albumId: Optional[str] = None
    artistId: Optional[str] = None
    type: Optional[MediaType] = None
    bookmarkPosition: Optional[int] = None
    originalWidth: Optional[int] = None
    originalHeight: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class NewestPodcasts(APIObject):
    episode: List[PodcastEpisode] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class NowPlayingEntry(APIObject):
    username: str
    minutesAgo: int
    playerId: int
    id: str
    isDir: bool
    title: str
    playerName: Optional[str] = None
    value: Optional[str] = None
    parent: Optional[str] = None
    album: Optional[str] = None
    artist: Optional[str] = None
    track: Optional[int] = None
    year: Optional[int] = None
    genre: Optional[str] = None
    coverArt: Optional[str] = None
    size: Optional[int] = None
    contentType: Optional[str] = None
    suffix: Optional[str] = None
    transcodedContentType: Optional[str] = None
    transcodedSuffix: Optional[str] = None
    duration: Optional[int] = None
    bitRate: Optional[int] = None
    path: Optional[str] = None
    isVideo: Optional[bool] = None
    userRating: Optional[UserRating] = None
    averageRating: Optional[AverageRating] = None
    playCount: Optional[int] = None
    discNumber: Optional[int] = None
    created: Optional[datetime] = None
    starred: Optional[datetime] = None
    albumId: Optional[str] = None
    artistId: Optional[str] = None
    type: Optional[MediaType] = None
    bookmarkPosition: Optional[int] = None
    originalWidth: Optional[int] = None
    originalHeight: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class NowPlaying(APIObject):
    entry: List[NowPlayingEntry] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class PlayQueue(APIObject):
    username: str
    changed: datetime
    changedBy: str
    entry: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    current: Optional[int] = None
    position: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Playlist(APIObject):
    id: str
    name: str
    songCount: int
    duration: int
    created: datetime
    changed: datetime
    allowedUser: List[str] = field(default_factory=list)
    value: Optional[str] = None
    comment: Optional[str] = None
    owner: Optional[str] = None
    public: Optional[bool] = None
    coverArt: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class PlaylistWithSongs(APIObject):
    id: str
    name: str
    songCount: int
    duration: int
    created: datetime
    changed: datetime
    entry: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    allowedUser: List[str] = field(default_factory=list)
    comment: Optional[str] = None
    owner: Optional[str] = None
    public: Optional[bool] = None
    coverArt: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Playlists(APIObject):
    playlist: List[Playlist] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class PodcastChannel(APIObject):
    id: str
    url: str
    status: PodcastStatus
    episode: List[PodcastEpisode] = field(default_factory=list)
    value: Optional[str] = None
    title: Optional[str] = None
    description: Optional[str] = None
    coverArt: Optional[str] = None
    originalImageUrl: Optional[str] = None
    errorMessage: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Podcasts(APIObject):
    channel: List[PodcastChannel] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


class ResponseStatus(APIObject, Enum):
    OK = "ok"
    FAILED = "failed"

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class ScanStatus(APIObject):
    scanning: bool
    value: Optional[str] = None
    count: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class SearchResult(APIObject):
    offset: int
    totalHits: int
    match: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class SearchResult2(APIObject):
    artist: List[Artist] = field(default_factory=list)
    album: List[Child] = field(default_factory=list)
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class SearchResult3(APIObject):
    artist: List[ArtistID3] = field(default_factory=list)
    album: List[AlbumID3] = field(default_factory=list)
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Share(APIObject):
    id: str
    url: str
    username: str
    created: datetime
    visitCount: int
    entry: List[Child] = field(default_factory=list)
    value: Optional[str] = None
    description: Optional[str] = None
    expires: Optional[datetime] = None
    lastVisited: Optional[datetime] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Shares(APIObject):
    share: List[Share] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class SimilarSongs(APIObject):
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class SimilarSongs2(APIObject):
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Songs(APIObject):
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Starred(APIObject):
    artist: List[Artist] = field(default_factory=list)
    album: List[Child] = field(default_factory=list)
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Starred2(APIObject):
    artist: List[ArtistID3] = field(default_factory=list)
    album: List[AlbumID3] = field(default_factory=list)
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class TopSongs(APIObject):
    song: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class User(APIObject):
    username: str
    scrobblingEnabled: bool
    adminRole: bool
    settingsRole: bool
    downloadRole: bool
    uploadRole: bool
    playlistRole: bool
    coverArtRole: bool
    commentRole: bool
    podcastRole: bool
    streamRole: bool
    jukeboxRole: bool
    shareRole: bool
    videoConversionRole: bool
    folder: List[int] = field(default_factory=list)
    value: Optional[str] = None
    email: Optional[str] = None
    maxBitRate: Optional[int] = None
    avatarLastChanged: Optional[datetime] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Users(APIObject):
    user: List[User] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Version(APIObject, str):
    pass


@dataclass(frozen=True)
class AudioTrack(APIObject):
    id: str
    value: Optional[str] = None
    name: Optional[str] = None
    languageCode: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Captions(APIObject):
    id: str
    value: Optional[str] = None
    name: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class VideoConversion(APIObject):
    id: str
    value: Optional[str] = None
    bitRate: Optional[int] = None
    audioTrackId: Optional[int] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class VideoInfo(APIObject):
    id: str
    captions: List[Captions] = field(default_factory=list)
    audioTrack: List[AudioTrack] = field(default_factory=list)
    conversion: List[VideoConversion] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Videos(APIObject):
    video: List[Child] = field(default_factory=list)
    value: Optional[str] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)


@dataclass(frozen=True)
class Response(APIObject):
    musicFolders: Optional[MusicFolders] = None
    indexes: Optional[Indexes] = None
    directory: Optional[Directory] = None
    genres: Optional[Genres] = None
    artists: Optional[ArtistsID3] = None
    artist: Optional[ArtistWithAlbumsID3] = None
    album: Optional[AlbumWithSongsID3] = None
    song: Optional[Child] = None
    videos: Optional[Videos] = None
    videoInfo: Optional[VideoInfo] = None
    nowPlaying: Optional[NowPlaying] = None
    searchResult: Optional[SearchResult] = None
    searchResult2: Optional[SearchResult2] = None
    searchResult3: Optional[SearchResult3] = None
    playlists: Optional[Playlists] = None
    playlist: Optional[PlaylistWithSongs] = None
    jukeboxStatus: Optional[JukeboxStatus] = None
    jukeboxPlaylist: Optional[JukeboxPlaylist] = None
    license: Optional[License] = None
    users: Optional[Users] = None
    user: Optional[User] = None
    chatMessages: Optional[ChatMessages] = None
    albumList: Optional[AlbumList] = None
    albumList2: Optional[AlbumList2] = None
    randomSongs: Optional[Songs] = None
    songsByGenre: Optional[Songs] = None
    lyrics: Optional[Lyrics] = None
    podcasts: Optional[Podcasts] = None
    newestPodcasts: Optional[NewestPodcasts] = None
    internetRadioStations: Optional[InternetRadioStations] = None
    bookmarks: Optional[Bookmarks] = None
    playQueue: Optional[PlayQueue] = None
    shares: Optional[Shares] = None
    starred: Optional[Starred] = None
    starred2: Optional[Starred2] = None
    albumInfo: Optional[AlbumInfo] = None
    artistInfo: Optional[ArtistInfo] = None
    artistInfo2: Optional[ArtistInfo2] = None
    similarSongs: Optional[SimilarSongs] = None
    similarSongs2: Optional[SimilarSongs2] = None
    topSongs: Optional[TopSongs] = None
    scanStatus: Optional[ScanStatus] = None
    error: Optional[Error] = None
    value: Optional[str] = None
    status: Optional[ResponseStatus] = None
    version: Optional[Version] = None

    def get(self, key: str, default: Any = None) -> Any:
        return getattr(self, key, default)
