from delphi_api.core.constants import ISO_3166_COUNTRIES_ALPHA2 # noinspection PyUnresolvedReferences from delphi_api.v2.constants import ( APPLE_COUNTRY_CODES, SPOTIFY_COUNTRY_CODES, YOUTUBE_COUNTRY_CODES, ) COLUMN_WORLDWIDE = 'worldwide' COLUMN_UNKNOWN_REGION = 'unknown' #: Currently a big endian signed int. #: see: https://docs.python.org/3.7/library/struct.html#format-strings BIGTABLE_INT_BYTE_FORMAT = '>i' BIGTABLE_LONG_BYTE_FORMAT = '>q' # Parameters available for specific queries SORT_ASC = 'asc' SORT_DESC = 'desc' AVAILABLE_SORT_PARAMS = {SORT_ASC, SORT_DESC} DEFAULT_SORT_ORDER = SORT_DESC #: Amazon Supported Countries - all Amazon DSPs AMAZON_COUNTRY_CODES = frozenset( {COLUMN_WORLDWIDE, COLUMN_UNKNOWN_REGION}.union(ISO_3166_COUNTRIES_ALPHA2) ) #: Fields we don't want returned in responses by default DEFAULT_EXCLUSIONS = ( 'created_at', 'deleted_at', 'updated_at', ) DUMMY_STREAMS = 100000 DUMMY_STREAMS_CHANGE_FACTOR = 1 DUMMY_STREAMS_CHANGE = DUMMY_STREAMS * DUMMY_STREAMS_CHANGE_FACTOR DUMMY_STREAMS_DSP_CHANGE_FACTOR = 3 DUMMY_STREAMS_DSP_CHANGE_AMT_FACTOR = 2 DUMMY_POPULARITY = 40 DUMMY_POPULARITY_CHANGE = 2 DUMMY_FOLLOWERS = 200000 DUMMY_FOLLOWERS_CHANGE = DUMMY_FOLLOWERS // 2 DSP_AMAZON = 'amazon' DSP_APPLE = 'apple' DSP_CHARTMETRIC = 'chartmetric' DSP_SPOTIFY = 'spotify' DSP_YOUTUBE = 'youtube' AVAILABLE_DSPS = {DSP_APPLE, DSP_AMAZON, DSP_SPOTIFY, DSP_YOUTUBE, DSP_CHARTMETRIC} ENABLED_DSPS = {DSP_AMAZON, DSP_APPLE, DSP_SPOTIFY, DSP_CHARTMETRIC} #: prefix row keys with group (ex: streams_*) ENABLE_GROUP_TYPE_PREFIX = False #: SMA is querying by DSP not `chart_group` since Bigtable row keys don't yet support chart_group #: This is an additional check to ensure they only get results from pg `chart` with the following ALLOWED_CHART_GROUPS = {'spotify_top200_daily', 'apple_top100_daily'} #: Offset in days for streams in track-positions/playlists TRACK_POS_STREAMS_OFFSET_DAYS = 6 COUNTRY_WORLDWIDE = 'worldwide'