from apollo_utils.core.utils.ext_enum import ExtEnum, extend_enum DEFAULT_IMAGE_SIZE = 640 SPOTIFY_TRACK_URI_PREFIX = "spotify:track:" SPOTIFY_EPISODE_URI_PREFIX = "spotify:episode:" class TracksGTPInclude(ExtEnum): WEEKS = "weeks" DATES = "dates" RE_ENTER = "is_re_enter" class BasePlaylistsOrder(ExtEnum): """Track playlists order by values.""" ADDED_DATE = "added_date" ADDED_DATE_DESC = "-added_date" CURR_POSITION = "current_position" CURR_POSITION_DESC = "-current_position" PLAYLIST_ID = "id" PLAYLIST_ID_DESC = "-id" @extend_enum(BasePlaylistsOrder) class BasePlaylistsWithFollowersOrder(ExtEnum): """Track playlists order by values.""" FOLLOWERS = "followers" FOLLOWERS_DESC = "-followers" @extend_enum(BasePlaylistsWithFollowersOrder) class BasePlaylistsWithPlaylistStreamsOrder(ExtEnum): PLAYLIST_STREAMS = "playlist_streams" PLAYLIST_STREAMS_DESC = "-playlist_streams" @extend_enum(BasePlaylistsWithPlaylistStreamsOrder) class TrackPlaylistsOrder(ExtEnum): TRACK_STREAMS = "track_streams" TRACK_STREAMS_DESC = "-track_streams" @extend_enum(BasePlaylistsOrder) class TrackPlaylistsAppleV2Order(ExtEnum): CURRENT_STREAMS = "current_streams" CURRENT_STREAMS_DESC = "-current_streams" @extend_enum(BasePlaylistsOrder) class TrackPlaylistsAmazonOrder(ExtEnum): CURRENT_STREAMS = "current_streams" CURRENT_STREAMS_DESC = "-current_streams" TrackPlaylistsAmazonOrderMap = { TrackPlaylistsAmazonOrder.CURRENT_STREAMS.value: "current_streams", TrackPlaylistsAmazonOrder.CURRENT_STREAMS_DESC.value: "-current_streams", TrackPlaylistsAmazonOrder.ADDED_DATE.value: "earliest_position_date", TrackPlaylistsAmazonOrder.ADDED_DATE_DESC.value: "-earliest_position_date", TrackPlaylistsAmazonOrder.CURR_POSITION.value: "current", TrackPlaylistsAmazonOrder.CURR_POSITION_DESC.value: "-current", TrackPlaylistsAmazonOrder.PLAYLIST_ID.value: "playlist_id_int", TrackPlaylistsAmazonOrder.PLAYLIST_ID_DESC.value: "-playlist_id_int", } class BaseTrackListOrder(ExtEnum): """Tracks order by values.""" ADDED_DATE = "added_date" ADDED_DATE_DESC = "-added_date" CURR_POSITION = "current_position" CURR_POSITION_DESC = "-current_position" TrackListAmazonOrderMap = { BaseTrackListOrder.ADDED_DATE.value: "earliest_position_date", BaseTrackListOrder.ADDED_DATE_DESC.value: "-earliest_position_date", BaseTrackListOrder.CURR_POSITION.value: "current", BaseTrackListOrder.CURR_POSITION_DESC.value: "-current", } class TrackPreviousPlaylistsOrder(ExtEnum): """Track playlists order by values.""" REMOVED_DATE = "removed_date" REMOVED_DATE_DESC = "-removed_date" PLAYLIST_ID = "id" PLAYLIST_ID_DESC = "-id" FOLLOWERS = "followers" FOLLOWERS_DESC = "-followers" class TrackPlaylistInclude(ExtEnum): """Additional fields to include.""" PLAYLIST_STREAMS = "playlist_streams" FOLLOWERS = "followers" TRACK_COUNT = "track_count" USERNAME = "username" TRACK_STREAMS = "track_streams" class TracksTopMarketsTiktokInclude(ExtEnum): CREATIONS = "creations" VIDEO_VIEWS = "video_views" class TiktokAnalyticsBreakdowns(ExtEnum): COUNTRY_TOTALS = "country_totals" DAILY = "daily" class Track: NAME = "name" ARTISTS = "artists" CURRENT_PLACEMENT_TYPE = "current" PAST_PLACEMENT_TYPE = "past" PLACEMENT_TYPES = (CURRENT_PLACEMENT_TYPE, PAST_PLACEMENT_TYPE) VISIT_TRACKS_LIMIT = 6