"""
Class object for MediaTrackerItem
Documentation:

Generated by generator/generator.py - 2023-05-09 20:21:34.332818
"""
from .base import MediaTrackerBase, MediaTrackerBaseClient


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class EpisodesUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class EpisodesTvshowUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class EpisodesTvshow(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return EpisodesTvshowUserrating(self.attributes.get("userRating", {}))

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

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

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

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

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

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

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

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

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

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


class Episodes(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return EpisodesUserrating(self.attributes.get("userRating", {}))

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

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

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

    @property
    def tvShow(self):
        return EpisodesTvshow(self.attributes.get("tvShow", {}))

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

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

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

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


class SeasonsUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class Seasons(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return SeasonsUserrating(self.attributes.get("userRating", {}))

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

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

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

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

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

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class Userrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class UpcomingepisodeUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class UpcomingepisodeTvshowUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class UpcomingepisodeTvshow(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return UpcomingepisodeTvshowUserrating(self.attributes.get("userRating", {}))

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

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

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

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

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

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

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

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

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

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


class Upcomingepisode(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return UpcomingepisodeUserrating(self.attributes.get("userRating", {}))

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

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

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

    @property
    def tvShow(self):
        return UpcomingepisodeTvshow(self.attributes.get("tvShow", {}))

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class LastairedepisodeUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class LastairedepisodeTvshowUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class LastairedepisodeTvshow(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return LastairedepisodeTvshowUserrating(self.attributes.get("userRating", {}))

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

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

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

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

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

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

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

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

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

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


class Lastairedepisode(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return LastairedepisodeUserrating(self.attributes.get("userRating", {}))

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

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

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

    @property
    def tvShow(self):
        return LastairedepisodeTvshow(self.attributes.get("tvShow", {}))

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class FirstunwatchedepisodeUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class Seenhistory(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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


class FirstunwatchedepisodeTvshowUserrating(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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


class FirstunwatchedepisodeTvshow(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return FirstunwatchedepisodeTvshowUserrating(
            self.attributes.get("userRating", {})
        )

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

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

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

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

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

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

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

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

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

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


class Firstunwatchedepisode(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return FirstunwatchedepisodeUserrating(self.attributes.get("userRating", {}))

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

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

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

    @property
    def tvShow(self):
        return FirstunwatchedepisodeTvshow(self.attributes.get("tvShow", {}))

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

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

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

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


class Lists(MediaTrackerBase):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

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

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

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


class MediaTrackerItem(MediaTrackerBaseClient):
    @property
    def id(self):
        return self.attributes.get("id", None)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    def userRating(self):
        return Userrating(self.attributes.get("userRating", {}))

    @property
    def upcomingEpisode(self):
        return Upcomingepisode(self.attributes.get("upcomingEpisode", {}))

    @property
    def lastAiredEpisode(self):
        return Lastairedepisode(self.attributes.get("lastAiredEpisode", {}))

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

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

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

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

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

    @property
    def firstUnwatchedEpisode(self):
        return Firstunwatchedepisode(self.attributes.get("firstUnwatchedEpisode", {}))

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

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

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