"""
Class object for CasaTunesNowPlaying
Documentation: https://github.com/jonkristian/pycasatunes

Generated by generator/generator.py - 2021-08-03 20:16:46.206915
"""
from .base import CasaBase, CasaBaseClient


class Bookmarkscope(CasaBase):
    @property
    def ID(self):
        return self.attributes.get("ID", "")

    @property
    def PersistentID(self):
        return self.attributes.get("PersistentID", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Flags(self):
        return self.attributes.get("Flags", None)


class Deeplinks(CasaBase):
    @property
    def Kind(self):
        return self.attributes.get("Kind", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Uri(self):
        return self.attributes.get("Uri", "")

    @property
    def MediaId(self):
        return self.attributes.get("MediaId", "")


class Contextmenuitems(CasaBase):
    @property
    def Type(self):
        return self.attributes.get("Type", None)

    @property
    def Key(self):
        return self.attributes.get("Key", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Value(self):
        return self.attributes.get("Value", "")


class Currsong(CasaBase):
    @property
    def Flags(self):
        return self.attributes.get("Flags", None)

    @property
    def QueueType(self):
        return self.attributes.get("QueueType", "")

    @property
    def ID(self):
        return self.attributes.get("ID", "")

    @property
    def PersistentID(self):
        return self.attributes.get("PersistentID", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Type(self):
        return self.attributes.get("Type", None)

    @property
    def ArtworkURI(self):
        return self.attributes.get("ArtworkURI", "")

    @property
    def ArtworkRatio(self):
        return self.attributes.get("ArtworkRatio", None)

    @property
    def Album(self):
        return self.attributes.get("Album", "")

    @property
    def Artists(self):
        return self.attributes.get("Artists", "")

    @property
    def Duration(self):
        return self.attributes.get("Duration", None)

    @property
    def DeepLinks(self):
        return [Deeplinks(x) for x in self.attributes.get("DeepLinks", [])]

    @property
    def BitRate(self):
        return self.attributes.get("BitRate", None)

    @property
    def ListenerCount(self):
        return self.attributes.get("ListenerCount", None)

    @property
    def Rating(self):
        return self.attributes.get("Rating", None)

    @property
    def TotalItems(self):
        return self.attributes.get("TotalItems", None)

    @property
    def DisplayInfo(self):
        return self.attributes.get("DisplayInfo", [])

    @property
    def ContextMenuItems(self):
        return [
            Contextmenuitems(x) for x in self.attributes.get("ContextMenuItems", [])
        ]

    @property
    def AccountName(self):
        return self.attributes.get("AccountName", "")


class Deeplinks(CasaBase):
    @property
    def Kind(self):
        return self.attributes.get("Kind", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Uri(self):
        return self.attributes.get("Uri", "")

    @property
    def MediaId(self):
        return self.attributes.get("MediaId", "")


class Contextmenuitems(CasaBase):
    @property
    def Type(self):
        return self.attributes.get("Type", None)

    @property
    def Key(self):
        return self.attributes.get("Key", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Value(self):
        return self.attributes.get("Value", "")


class Nextsong(CasaBase):
    @property
    def Flags(self):
        return self.attributes.get("Flags", None)

    @property
    def QueueType(self):
        return self.attributes.get("QueueType", "")

    @property
    def ID(self):
        return self.attributes.get("ID", "")

    @property
    def PersistentID(self):
        return self.attributes.get("PersistentID", "")

    @property
    def Title(self):
        return self.attributes.get("Title", "")

    @property
    def Type(self):
        return self.attributes.get("Type", None)

    @property
    def ArtworkURI(self):
        return self.attributes.get("ArtworkURI", "")

    @property
    def ArtworkRatio(self):
        return self.attributes.get("ArtworkRatio", None)

    @property
    def Album(self):
        return self.attributes.get("Album", "")

    @property
    def Artists(self):
        return self.attributes.get("Artists", "")

    @property
    def Duration(self):
        return self.attributes.get("Duration", None)

    @property
    def DeepLinks(self):
        return [Deeplinks(x) for x in self.attributes.get("DeepLinks", [])]

    @property
    def BitRate(self):
        return self.attributes.get("BitRate", None)

    @property
    def ListenerCount(self):
        return self.attributes.get("ListenerCount", None)

    @property
    def Rating(self):
        return self.attributes.get("Rating", None)

    @property
    def TotalItems(self):
        return self.attributes.get("TotalItems", None)

    @property
    def DisplayInfo(self):
        return self.attributes.get("DisplayInfo", [])

    @property
    def ContextMenuItems(self):
        return [
            Contextmenuitems(x) for x in self.attributes.get("ContextMenuItems", [])
        ]


class CasaTunesNowPlaying(CasaBaseClient):
    @property
    def SourceID(self):
        return self.attributes.get("SourceID", None)

    @property
    def QueueCount(self):
        return self.attributes.get("QueueCount", None)

    @property
    def QueueSongIndex(self):
        return self.attributes.get("QueueSongIndex", None)

    @property
    def ChangeQueueID(self):
        return self.attributes.get("ChangeQueueID", None)

    @property
    def ChangeMetaDataID(self):
        return self.attributes.get("ChangeMetaDataID", None)

    @property
    def ChangeBookmarkID(self):
        return self.attributes.get("ChangeBookmarkID", None)

    @property
    def BookmarkScope(self):
        return Bookmarkscope(self.attributes.get("BookmarkScope", {}))

    @property
    def Status(self):
        return self.attributes.get("Status", None)

    @property
    def Controls(self):
        return self.attributes.get("Controls", None)

    @property
    def RepeatMode(self):
        return self.attributes.get("RepeatMode", None)

    @property
    def ShuffleMode(self):
        return self.attributes.get("ShuffleMode", False)

    @property
    def CurrSong(self):
        return Currsong(self.attributes.get("CurrSong", {}))

    @property
    def NextSong(self):
        return Nextsong(self.attributes.get("NextSong", {}))

    @property
    def CurrProgress(self):
        return self.attributes.get("CurrProgress", None)

    @property
    def SearchPromptText(self):
        return self.attributes.get("SearchPromptText", "")

    @property
    def SourceLockedByZoneID(self):
        return self.attributes.get("SourceLockedByZoneID", None)

    @property
    def ServiceName(self):
        return self.attributes.get("ServiceName", "")

    @property
    def ServiceID(self):
        return self.attributes.get("ServiceID", "")

    @property
    def ServiceLogoURI(self):
        return self.attributes.get("ServiceLogoURI", "")
