from apollo_utils.core.utils.ext_enum import ExtEnum, extend_enum from datetime import datetime, timezone from enum import Enum BASE_API_PREFIX = "/api" USER_HEADER = "X-User-Id" APP_SLUG_HEADER = "X-App-Slug" NONEXISTENT_DATE = int(datetime.timestamp(datetime(year=2000, month=1, day=1, tzinfo=timezone.utc))) class Service(ExtEnum): """All services constant names.""" APOLLO_API = "apollo" DSP_API = "dsp" VENDOR_API = "vendor" USER_DATA_API = "user_data" FILTR_API = "filtr" REDIS = "redis" ELASTICSEARCH = "elasticsearch" class DSP_SPOTIFY_APPLE(ExtEnum): APPLE = "apple" SPOTIFY = "spotify" @extend_enum(DSP_SPOTIFY_APPLE) class DSP_SPOTIFY_APPLE_AMAZON(ExtEnum): AMAZON = "amazon" @extend_enum(DSP_SPOTIFY_APPLE_AMAZON) class DSP_SPOTIFY_APPLE_AMAZON_TIKTOK(ExtEnum): TIKTOK = "tiktok" @extend_enum(DSP_SPOTIFY_APPLE_AMAZON_TIKTOK) class DSP(ExtEnum): """All DSP constant names.""" pass class DspApiPrefix(Enum): """DSP to Apollo/DSP(delphi) API prefixes.""" APPLE = "apple-music" SPOTIFY = "spotify" DEFAULT_PAGINATION_LIMIT = 10 DEFAULT_MAX_PAGINATION_LIMIT = 9999 DEFAULT_IMAGE_SIZE = 300 APPLE_MAX_IMAGE_SIZE: int = 6000 SPOTIFY_PLAYLIST_URI_PREFIX = "spotify:playlist:" SPOTIFY_PLAYLIST_IMAGE_URL_MASK = "https://dhfsk7jl2g0km.cloudfront.net/playlist-{playlist_id}.jpeg" SPOTIFY_ARTIST_URI_PREFIX = "spotify:artist:" SPOTIFY_IMAGE_SIZES = (64, 300, 640) UNIX_EPOCH_START_DATE = "1970-01-01" ZERO_TREND: int = 0 PLAYLISTS_POSSIBLE_INCLUDE = ["playlist_streams"] EXPORT_PATTERNS = [ "(\w+)/editorialplaylist/excel", "playlists/trend/excel", "(\w+)/buzz/companies/(\w+)/playlists/excel", "trends/(\w+)/buzz/companies/(\w+)/playlists/trend/excel", ] """ VISITED_TRACKS_DSP - a tuple of DSP(s) to make a call to apollo-api and check user visited tracks for provided DSP. For now we track only spotify tracks """ VISITED_TRACKS_DSP = (DSP.SPOTIFY,)