""" General v3 Enumerations for things like tables, columns, row keys, etc. See Also: :mod:`delphi_api.v3.data_models.bigtable.row_key_constants` """ from enum import Enum, unique @unique class TableName(Enum): """Database table names""" #: Amazon amazon_streams = 'amazon_music' #: Apple apple_streams = 'apple_music' #: Spotify spotify_streams = 'spotify' #: YouTube youtube_streams = 'youtube_music' #: Chartmetric chartmetric = 'chartmetric' #: Chart Track Positions charts = 'charts' #: Playlist Track Positions playlists = 'playlists' @unique class ColumnFamily(Enum): """Bigtable column 'family' names""" META = 'meta' METRICS = 'metrics' POS = 'pos' @unique class ColumnName(Enum): """Bigtable column 'qualifier' names""" ARTIST_ID = 'artist_id' CHART_ID = 'chart_id' COMMENTS = 'comments' CURRENT = 'current' DATE = 'report_date' DEMOGRAPHICS = 'demographics' DSP = 'dsp' FANS = 'fans' FOLLOWERS = 'followers' ISRC = 'isrc' LIKES = 'likes' LISTENERS = 'listeners' PLAYLIST_ID = 'playlist_id' POPULARITY = 'popularity' POSITION = 'position' PRODUCT_ID = 'product_id' STREAMS = 'streams' SUBSCRIBERS = 'subscribers' TALKS = 'talks' TRACKFAMILY_ID = 'trackfamily_id' TRACK_ID = 'track_id' VIEWS = 'views' @unique class RowKeyPrefix(Enum): """Prefix without the aggregation period. See :class:`RowKeyAgg`.""" artist = 'artist' artist_date = 'artist_date' artist_date_track = 'artist_date_track' artist_isrc_date = 'artist_isrc_date' artist_playlist_date = 'artist_playlist_date' artist_track_date = 'artist_track_date' chart_date_isrc = 'chart_date_isrc' chart_isrc_date = 'chart_isrc_date' dsp_date_isrc_chart = 'dsp_date_isrc_chart' dsp_isrc_date_chart = 'dsp_isrc_date_chart' dsp_isrc_date_playlist = 'dsp_isrc_date_playlist' isrc_chart_date = 'isrc_chart_date' isrc_date_chart = 'isrc_date_chart' isrc_date = 'isrc_date' isrc_date_playlist = 'isrc_date_playlist' isrc_playlist_date = 'isrc_playlist_date' playlist_date = 'playlist_date' playlist_date_isrc = 'playlist_date_isrc' playlist_isrc_date = 'playlist_isrc_date' playlist_track_date = 'playlist_track_date' product_date = 'product_date' track_artist_date = 'track_artist_date' track_date = 'track_date' track_date_playlist = 'track_date_playlist' @unique class RowKeySegment(Enum): """ These *would* replace the string values for the segments in :module:`.row_key_constants` if there was any plans to change them. They yet remain as strings in that file for readability. """ ARTIST_ID = 'artist_id' CHART_ID = 'chart_id' CURRENT = 'current' DATE = 'date' ISRC = 'isrc' PLAYLIST_ID = 'playlist_id' PRODUCT_ID = 'product_id' TRACK_ID = 'track_id' @unique class RowKeyAgg(Enum): """Prefix aggregation period""" ALLTIME = 'alltime' DAILY = 'daily' DAY = 'day' DAY14 = '14day' DAY28 = '28day' DAY7 = '7day' MONTH = 'month' YEAR = 'year' @unique class AggByParam(Enum): """Available values for the ``agg_by`` API parameter""" ARTIST = 'artist' PLAYLIST = 'playlist' PRODUCT = 'product' ISRC = 'isrc' @unique class GroupByParam(Enum): """Available values for the ``group_by`` API parameter""" DATE = 'date' ISRC = 'isrc' @unique class SubsetParam(Enum): """Available values for the ``subset`` API parameter for streams endpoints""" PLAYLISTS = 'playlists' @unique class IncludeParamStreams(Enum): """Available values for the ``include`` API parameter for streams endpoints""" DEMOGRAPHICS = 'demographics' @unique class IncludeParamTracklists(Enum): """Available values for the ``include`` API parameter for track listing endpoints""" CHARTS = 'charts' PLAYLISTS = 'playlists' STREAMS = 'streams' @unique class TracklistType(Enum): """Types for the /track-positions/* endpoints""" CHARTS = 'charts' PLAYLISTS = 'playlists' @unique class ChartName(Enum): TOP100 = 'top100' TOP200 = 'top200' VIRAL50 = 'viral50' @unique class ChartPeriod(Enum): DAILY = 'daily' WEEKLY = 'weekly' @unique class ChartmetricPartner(Enum): APPLE = 'apple' # apple is not implemented on chartmetric side BANDSINTOWN = 'bandsintown' DEEZER = 'deezer' FACEBOOK = 'facebook' INSTAGRAM = 'instagram' SOUNDCLOUD = 'soundcloud' SPOTIFY = 'spotify' TWITTER = 'twitter' WIKIPEDIA = 'wikipedia' YOUTUBE_ARTIST = 'youtube_artist' YOUTUBE_CHANNEL = 'youtube_channel'