"""Constants.""" from enum import Enum from typing import Any DEFAULT_FORMAT = -1 USER_DEFINED = "UserDefined" VARIOUS_ARTISTS = "Various Artists" # https://datatracker.ietf.org/doc/html/rfc5646 UNDETERMINED_LANGUAGE_CODE = "und" class TerritoryStandard(Enum): ORCHARD_2016 = "Orch_1_2016" ISO_3166_2016 = "ISO_3166_1_2016" class ProductTypeId(Enum): MUSIC = 1 class DistributionFormatId(Enum): DIGITAL_AUDIO = 1 MUSIC_VIDEO = 57 class ProductType(Enum): CLASSICAL_ALBUM = "classical_album" COMPILATION = "compilation" EP = "ep" MUSIC_ALBUM = "music_album" MUSIC_BUNDLE = "music_bundle" MUSIC_SINGLE = "music_single" RINGTONE = "ringtone" VIDEO_SINGLE = "video_single" VIDEO_ALBUM = "video_album" # Defined as a normal class instead of an enum to prevent usage as a type. # We want to allow new store ids to be added without updating the code. class StoreIds: APPLE = 1 AMAZON = 187 AWA = 670 CLICKN_CLEAR = 1942 JIOSAAVN_SA = 1378 JIOSAAVN_WW = 1377 LIBRARY_IDEAS_FREEGAL = 535 MYSPACE = 367 NO_STORE = 0 PRESTO_CLASSICAL = 616 SPOTIFY = 286 SNOCAP = 199 TIGER_MEDIA = 1928 VEVO = 446 VECTOR_TESTING = 1896 class ParticipantRole(Enum): ACCOMPANYIST = "accompanyist" ADAPTER = "adapter" ADDITIONAL_ENGINEER = "additional engineer" ADDITIONAL_MIXING_ENGINEER = "additional mixing engineer" ADDITIONAL_PERFORMER = "additional performer" ADDITIONAL_PROGRAMMING_ENGINEER = "additional programming engineer" ADDITIONAL_STUDIO_PRODUCER = "additional studio producer" ARRANGER = "arranger" ARTIST_BACKGROUND_VOCAL_ENGINEER = "artist background vocal engineer" ARTIST_VOCAL_ENGINEER = "artist vocal engineer" ARTIST_VOCAL_SECOND_ENGINEER = "artist vocal second engineer" ASSISTANT_CONDUCTOR = "assistant conductor" ASSISTANT_ENGINEER = "assistant engineer" ASSISTANT_PRODUCER = "assistant producer" ASSOCIATE_PRODUCER = "associate producer" AURAL_TRAINER = "aural trainer" AUTHOR = "author" AUTHOR_OF_AFTERWORD = "author of afterword" A_R_ADMINISTRATOR = "a & r administrator" A_R_COORDINATOR = "a & r coordinator" BACKGROUND_VOCALIST = "background vocalist" BALANCE_ENGINEER = "balance engineer" BAND_LEADER = "band leader" CAST = "cast" CENSOR = "censor" CHOIR = "choir" CHOIR_MEMBER = "choir member" CHORUS_MASTER = "chorus master" CLUB_DJ = "club dj" COMPILATION_PRODUCER = "compilation producer" COMPILER = "compiler" COMPOSER = "composer" COMPOSER_LYRICIST = "composer lyricist" CONCEPTOR = "conceptor" CONCERT_MASTER = "concert master" CONDUCTOR = "conductor" CO_MIXER = "co-mixer" CO_MIXING_ENGINEER = "co-mixing engineer" CO_PRODUCER = "co-producer" DANCER = "dancer" DIALOGUE_AUTHOR = "dialogue author" DIGITAL_AUDIO_WORKSTATION_ENGINEER = "digital audio workstation engineer" DIGITAL_EDITING_ENGINEER = "digital editing engineer" DIGITAL_EDITING_SECOND_ENGINEER = "digital editing second engineer" DIRECTOR = "director" DIRECT_STREAM_DIGITAL_ENGINEER = "direct stream digital engineer" DJ = "dj" DUBBER = "dubber" EDITOR = "editor" ENCODER = "encoder" ENGINEER = "engineer" ENSEMBLE = "ensemble" FEATURING = "featuring" GROUP_MEMBER = "group member" GUEST_CONDUCTOR = "guest conductor" LEAD_PERFORMER = "lead performer" LEAD_VOCALIST = "lead vocalist" LIBRETTIST = "librettist" LYRICIST = "lyricist" MASTERING_ENGINEER = "mastering engineer" MASTERING_SECOND_ENGINEER = "mastering second engineer" MIXER = "mixer" MIXING_ENGINEER = "mixing engineer" MIXING_SECOND_ENGINEER = "mixing second engineer" MUSIC_ARRANGER = "music arranger" MUSIC_COPYIST = "music copyist" MUSIC_DIRECTOR = "music director" MUSIC_GROUP = "music group" NARRATOR = "narrator" NON_LYRIC_AUTHOR = "non-lyric author" ORCHESTRA = "orchestra" ORCHESTRA_MEMBER = "orchestra member" OTHER_COMPOSITIONAL_CONTRIBUTOR = "other compositional contributor" OTHER_LABEL_PERSONNEL = "other label personnel" OTHER_STUDIO_PERSONNEL = "other studio personnel" OVERDUB_ENGINEER = "overdub engineer" OVERDUB_SECOND_ENGINEER = "overdub second engineer" PERFORMER = "performer" PLAYBACK_SINGER = "playback singer" POST_PRODUCER = "post producer" PRE_PRODUCTION = "pre production" PRE_PRODUCTION_ENGINEER = "pre production engineer" PRE_PRODUCTION_SECOND_ENGINEER = "pre production second engineer" PRIMARY_MUSICIAN = "primary musician" PRODUCER = "producer" PRODUCTION_ASSISTANT = "production assistant" PRODUCTION_COORDINATOR = "production coordinator" PRODUCTION_MANAGER = "production manager" PRODUCTION_SECRETARY = "production secretary" PROGRAMMER = "programmer" PROGRAMMING_ENGINEER = "programming engineer" PROJECT_ENGINEER = "project engineer" PUBLISHER = "publisher" RECORDING_ENGINEER = "recording engineer" REISSUE_PRODUCER = "reissue producer" REMIXER = "remixer" REMIXING_ENGINEER = "remixing engineer" SECOND_ENGINEER = "second engineer" SECOND_RECORDING_ENGINEER = "second recording engineer" SECOND_REMIXING_ENGINEER = "second remixing engineer" SOLOIST = "soloist" SOUND_DESIGNER = "sound designer" SOUND_MIXER = "sound mixer" SOUND_RECORDIST = "sound recordist" SPEAKER = "speaker" STAGE_ASSISTANT_ENGINEER = "stage assistant engineer" STAGE_ENGINEER = "stage engineer" STORY = "story" STRINGS_DIRECTOR = "strings director" STRING_ENGINEER = "string engineer" STRING_PRODUCER = "string producer" STUDIO_CONDUCTOR = "studio conductor" STUDIO_MUSICIAN = "studio musician" STUDIO_PERSONNEL = "studio personnel" STUDIO_PRODUCER = "studio producer" SUB_ARRANGER = "sub-arranger" SUB_LYRICIST = "sub-lyricist" SURROUND_MIXING_ENGINEER = "surround mixing engineer" SURROUND_MIXING_SECOND_ENGINEER = "surround mixing second engineer" TONMEISTER = "tonmeister" TRACKING_ENGINEER = "tracking engineer" TRACKING_SECOND_ENGINEER = "tracking second engineer" TRACK_WRITER = "track_writer" TRANSFERS_SAFETIES_ENGINEER = "transfers & safeties engineer" TRANSFERS_SAFETIES_SECOND_ENGINEER = "transfers & safeties second engineer" TRANSLATOR = "translator" VIDEOGRAPHER = "videographer" VOCALIST = "vocalist" VOCAL_ARRANGER = "vocal arranger" VOCAL_EDITING_ENGINEER = "vocal editing engineer" VOCAL_EDITING_SECOND_ENGINEER = "vocal editing second engineer" VOCAL_ENGINEER = "vocal engineer" VOCAL_PRODUCER = "vocal producer" VOCAL_SECOND_ENGINEER = "vocal second engineer" VOCALS_BEATBOXING = "vocals - beatboxing" VOCALS_CHANTING = "vocals - chanting" VOCALS_RAPPER = "vocals - rapper" VOCALS_SHOUTING = "vocals - shouting" VOCALS_SPOKEN_WORD = "vocals - spoken word" VOCALS_VOCAL_EFFECTS = "vocals - vocal effects" VOCALS_WHISTLING = "vocals - whistling" VOCALS_YODELING = "vocals - yodeling" VOICE_ACTOR = "voice actor" WHOLE_ORCHESTRA = "whole orchestra" WRITER_OF_ACCOMPANYING_MATERIAL = "writer of accompanying material" class InstrumentRole(Enum): BRASS_ALPHORN = "brass - alphorn" BRASS_BUGLE = "brass - bugle" BRASS_CORNET = "brass - cornet" BRASS_EUPHONIUM = "brass - euphonium" BRASS_FLUEGELHORN = "brass - fluegelhorn" BRASS_FRENCH_HORN = "brass - french horn" BRASS_HORN = "brass - horn" BRASS_OTHER = "brass - other" BRASS_TROMBONE = "brass - trombone" BRASS_TRUMPET = "brass - trumpet" BRASS_TUBA = "brass - tuba" ELECTRONICS_DJ = "electronics - dj" ELECTRONICS_LOOPS = "electronics - loops" ELECTRONICS_PROGRAMMER = "electronics - programmer" ELECTRONICS_SAMPLER = "electronics - sampler" ELECTRONICS_SCRATCHING = "electronics - scratching" ELECTRONICS_THEREMIN = "electronics - theremin" ELECTRONICS_VOCODER = "electronics - vocoder" GUITAR_ACOUSTIC_BASS_GUITAR = "guitar - acoustic bass guitar" GUITAR_ACOUSTIC_GUITAR = "guitar - acoustic guitar" GUITAR_BANJO = "guitar - banjo" GUITAR_BASS_GUITAR = "guitar - bass guitar" GUITAR_DOBRO = "guitar - dobro" GUITAR_ELECTRIC_BASS_GUITAR = "guitar - electric bass guitar" GUITAR_ELECTRIC_GUITAR = "guitar - electric guitar" GUITAR_GUITAR_SYNTHESIZER = "guitar - guitar synthesizer" GUITAR_LUTE = "guitar - lute" GUITAR_MANDOLIN = "guitar - mandolin" GUITAR_OTHER = "guitar - other" GUITAR_SITAR = "guitar - sitar" GUITAR_SLIDE_GUITAR = "guitar - slide guitar" GUITAR_UKULELE = "guitar - ukulele" KEYBOARDS_CELESTE = "keyboards - celeste" KEYBOARDS_CLAVICHORD = "keyboards - clavichord" KEYBOARDS_ELECTRIC_KEYBOARD = "keyboards - electric keyboard" KEYBOARDS_HARMONIUM = "keyboards - harmonium" KEYBOARDS_HARPSICHORD = "keyboards - harpsichord" KEYBOARDS_ORGAN = "keyboards - organ" KEYBOARDS_OTHER = "keyboards - other" KEYBOARDS_MELODICA = "keyboards - melodica" KEYBOARDS_PIANO = "keyboards - piano" KEYBOARDS_SYNTHESIZER = "keyboards - synthesizer" OTHER_SOUND_EFFECTS = "other - sound effects" OTHER_UNLISTED_PERFORMER_ROLE = "other - unlisted performer role" PERCUSSION_BASS_DRUM = "percussion - bass drum" PERCUSSION_BELLS = "percussion - bells" PERCUSSION_BENDIR = "percussion - bendir" PERCUSSION_BONGOS = "percussion - bongos" PERCUSSION_CABASA = "percussion - cabasa" PERCUSSION_CASTANET = "percussion - castanet" PERCUSSION_CAXIXI = "percussion - caxixi" PERCUSSION_CHIMES = "percussion - chimes" PERCUSSION_CLAPPING = "percussion - clapping" PERCUSSION_CLAVES = "percussion - claves" PERCUSSION_CONGAS = "percussion - congas" PERCUSSION_COWBELL = "percussion - cowbell" PERCUSSION_CYMBALS = "percussion - cymbals" PERCUSSION_DJEMBE = "percussion - djembe" PERCUSSION_DRUM_MACHINE = "percussion - drum machine" PERCUSSION_DRUMS = "percussion - drums" PERCUSSION_ELECTRONIC_DRUMS = "percussion - electronic drums" PERCUSSION_ELECTRONIC_PERCUSSION = "percussion - electronic percussion" PERCUSSION_FINGER_CYMBALS = "percussion - finger cymbals" PERCUSSION_GLOCKENSPIEL = "percussion - glockenspiel" PERCUSSION_GONG = "percussion - gong" PERCUSSION_GUIRO = "percussion - guiro" PERCUSSION_HAND_BELLS = "percussion - hand bells" PERCUSSION_HI_HAT = "percussion - hi-hat" PERCUSSION_MARACAS = "percussion - maracas" PERCUSSION_MARIMBA = "percussion - marimba" PERCUSSION_OTHER = "percussion - other" PERCUSSION_SHAKER = "percussion - shaker" PERCUSSION_SNARE_DRUM = "percussion - snare drum" PERCUSSION_STEEL_DRUM = "percussion - steel drum" PERCUSSION_TABLA = "percussion - tabla" PERCUSSION_TAMBOURINE = "percussion - tambourine" PERCUSSION_TEMPLE_BLOCK = "percussion - temple block" PERCUSSION_TIMBALES = "percussion - timbales" PERCUSSION_TIMPANI = "percussion - timpani" PERCUSSION_TOM_TOM = "percussion - tom-tom" PERCUSSION_TRIANGLE = "percussion - triangle" PERCUSSION_VIBRAPHONE = "percussion - vibraphone" PERCUSSION_VIBRA_SLAP = "percussion - vibra-slap" PERCUSSION_WIND_CHIMES = "percussion - wind chimes" PERCUSSION_WOODBLOCK = "percussion - woodblock" PERCUSSION_XYLOPHONE = "percussion - xylophone" STRING_AUTOHARP = "string - autoharp" STRING_BALALAIKA = "string - balalaika" STRING_CELLO = "string - cello" STRING_DOUBLE_BASS = "string - double bass" STRING_DULCIMER = "string - dulcimer" STRING_ERHU = "string - erhu" STRING_FIDDLE = "string - fiddle" STRING_HARP = "string - harp" STRING_KORA = "string - kora" STRING_KOTO = "string - koto" STRING_OTHER = "string - other" STRING_PIPA = "string - pipa" STRING_SANTOOR = "string - santoor" STRING_TANPURA = "string - tanpura" STRING_VIOLA = "string - viola" STRING_VIOLIN = "string - violin" STRING_ZITHER = "string - zither" VOCALS_ALTO = "vocals - alto" VOCALS_BACKING_VOCALS = "vocals - backing vocals" VOCALS_BARITONE = "vocals - baritone" VOCALS_BASS_BARITONE = "vocals - bass-baritone" VOCALS_BASS = "vocals - bass" VOCALS_BEATBOXING = "vocals - beatboxing" VOCALS_CHANTING = "vocals - chanting" VOCALS_CHORAL = "vocals - choral" VOCALS_CHORUS_MASTER = "vocals - chorus master" VOCALS_CONTRABASS = "vocals - contrabass" VOCALS_CONTRALTO = "vocals - contralto" VOCALS_COUNTER_TENOR = "vocals - counter-tenor" VOCALS_FALSETTO = "vocals - falsetto" VOCALS_LEAD_VOCALS = "vocals - lead vocals" VOCALS_MEZZO_CONTRALTO = "vocals - mezzo-contralto" VOCALS_MEZZO_SOPRANO = "vocals - mezzo-soprano" VOCALS_RAPPER = "vocals - rapper" VOCALS_SHOUTING = "vocals - shouting" VOCALS_SOPRANO = "vocals - soprano" VOCALS_SPOKEN_WORD = "vocals - spoken word" VOCALS_TENOR = "vocals - tenor" VOCALS_VOCAL_EFFECTS = "vocals - vocal effects" VOCALS_WHISTLING = "vocals - whistling" VOCALS_YODELING = "vocals - yodeling" WIND_INSTRUMENTS_ACCORDION = "wind instruments - accordion" WIND_INSTRUMENTS_ALTO_SAXOPHONE = "wind instruments - alto saxophone" WIND_INSTRUMENTS_BAGPIPES = "wind instruments - bagpipes" WIND_INSTRUMENTS_BANSURI = "wind instruments - bansuri" WIND_INSTRUMENTS_BARITONE_SAXOPHONE = "wind instruments - baritone saxophone" WIND_INSTRUMENTS_BASSOON = "wind instruments - bassoon" WIND_INSTRUMENTS_BIRD_WHISTLE = "wind instruments - bird whistle" WIND_INSTRUMENTS_CLARINET = "wind instruments - clarinet" WIND_INSTRUMENTS_DIDGERIDOO = "wind instruments - didgeridoo" WIND_INSTRUMENTS_DUDUK = "wind instruments - duduk" WIND_INSTRUMENTS_ELECTRONIC = "wind instruments - electronic" WIND_INSTRUMENTS_FLUTE = "wind instruments - flute" WIND_INSTRUMENTS_HARMONICA = "wind instruments - harmonica" WIND_INSTRUMENTS_KAZOO = "wind instruments - kazoo" WIND_INSTRUMENTS_OBOE = "wind instruments - oboe" WIND_INSTRUMENTS_OTHER = "wind instruments - other" WIND_INSTRUMENTS_PAN_FLUTE = "wind instruments - pan flute" WIND_INSTRUMENTS_PICCOLO = "wind instruments - piccolo" WIND_INSTRUMENTS_QUENA = "wind instruments - quena" WIND_INSTRUMENTS_RECORDER = "wind instruments - recorder" WIND_INSTRUMENTS_SARRUSOPHONE = "wind instruments - sarrusophone" WIND_INSTRUMENTS_SAXOPHONE = "wind instruments - saxophone" WIND_INSTRUMENTS_SOPRANO_SAXOPHONE = "wind instruments - soprano saxophone" WIND_INSTRUMENTS_TENOR_SAXOPHONE = "wind instruments - tenor saxophone" WIND_INSTRUMENTS_WHISTLE = "wind instruments - whistle" WIND_INSTRUMENTS_WOOD_FLUTE = "wind instruments - wood flute" # Some track performers (aka "instruments") should map to Participant roles def instrument_to_participant_role_mapping() -> dict[InstrumentRole, ParticipantRole]: return { InstrumentRole.ELECTRONICS_DJ: ParticipantRole.DJ, InstrumentRole.VOCALS_ALTO: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_BACKING_VOCALS: ParticipantRole.BACKGROUND_VOCALIST, InstrumentRole.VOCALS_BARITONE: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_BASS: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_BASS_BARITONE: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_BEATBOXING: ParticipantRole.VOCALS_BEATBOXING, InstrumentRole.VOCALS_CHANTING: ParticipantRole.VOCALS_CHANTING, InstrumentRole.VOCALS_CHORAL: ParticipantRole.CHOIR, InstrumentRole.VOCALS_CHORUS_MASTER: ParticipantRole.CHORUS_MASTER, InstrumentRole.VOCALS_CONTRABASS: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_CONTRALTO: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_COUNTER_TENOR: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_FALSETTO: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_LEAD_VOCALS: ParticipantRole.LEAD_VOCALIST, InstrumentRole.VOCALS_MEZZO_CONTRALTO: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_MEZZO_SOPRANO: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_RAPPER: ParticipantRole.VOCALS_RAPPER, InstrumentRole.VOCALS_SHOUTING: ParticipantRole.VOCALS_SHOUTING, InstrumentRole.VOCALS_SOPRANO: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_SPOKEN_WORD: ParticipantRole.VOCALS_SPOKEN_WORD, InstrumentRole.VOCALS_TENOR: ParticipantRole.VOCALIST, InstrumentRole.VOCALS_VOCAL_EFFECTS: ParticipantRole.VOCALS_VOCAL_EFFECTS, InstrumentRole.VOCALS_WHISTLING: ParticipantRole.VOCALS_WHISTLING, InstrumentRole.VOCALS_YODELING: ParticipantRole.VOCALS_YODELING, } class DistributionTypeId(Enum): FULL_TRACK = 1 TONE = 2 class DistributionFeatureId(Enum): A_LA_CARTE_DOWNLOAD = 1 SUBSCRIPTION_DOWNLOAD = 2 SUBSCRIPTION_STREAMING = 3 SUBSCRIPTION_PORTABLE_TETHERED = 4 OTA_INCLUDING_DUAL_DELIVERY = 5 OTA_WITH_RINGTONE_USE = 6 STREAMING_SUBSCRIPTION_TO_MOBILE = 7 STREAMING_ON_DEMAND_TO_MOBILE = 8 RINGTONES = 9 RINGBACK_TONES = 10 AD_SUPPORTED_STREAMING = 18 class LyricsExplicitness(Enum): EXPLICIT = "Y" UNKNOWN = None CLEAN = "C" NOT_EXPLICIT = "N" class MetadataFormat(Enum): RAW = "raw" DDEX_ERN = "ddex_ern" class MetadataFormatVersion(Enum): RAW = (MetadataFormat.RAW, "latest") DDEX_ERN_4_3 = (MetadataFormat.DDEX_ERN, "4.3") format: MetadataFormat version: str def __new__(cls, format_: MetadataFormat, version: str) -> "MetadataFormatVersion": member = object.__new__(cls) member._value_ = (format_, version) member.format = format_ member.version = version return member @staticmethod def get_supported_versions(format_: MetadataFormat) -> list[str]: return [ delivery_format_version.version for delivery_format_version in MetadataFormatVersion if delivery_format_version.format == format_ ] class DeliveryType(Enum): COMPLETE_ALBUM = "complete_album" METADATA_UPDATE = "metadata_update" class DownloadStreamRights(Enum): DOWNLOAD = "download" STREAM = "stream" def __lt__(self, other) -> bool: # type: ignore[no-untyped-def] values = list(self.__class__) return values.index(self) < values.index(other) class TrackOfferType(Enum): ALBUM_DOWNLOAD_ONLY = "album_download_only" ALBUM_DOWNLOAD_STREAM = "album_download_stream" ALBUM_TRACK_DOWNLOAD = "album_track_download" ALL = "all" STREAM_ONLY = "stream_only" TRACK_DOWNLOAD_ONLY = "track_download_only" TRACK_DOWNLOAD_STREAM = "track_download_stream" NONE = "none" class CommercialModelType(Enum): AD_SUPPORTED = "ad_supported" CONTRACT = "contract" PAY = "pay" RIGHTS = "rights" SUBSCRIPTION = "subscription" class UseType(Enum): CONTRACT = "contract" CONDITIONAL_DOWNLOAD = "cond_download" LABEL = "label" NON_INTERACTIVE = "non-interactive" ON_DEMAND = "on-demand" PERMANENT_DOWNLOAD = "permanent_download" RINGBACK = "ringback" RINGTONE = "ringtone" STREAM = "stream" PRIME_ON_DEMAND = "PrimeOnDemandStream" def __lt__(self, other) -> bool: # type: ignore[no-untyped-def] values = list(self.__class__) return values.index(self) < values.index(other) class DistributionContext(Enum): DIGITAL = "digital" class EncodingProfileType(Enum): AUDIO = "audio" IMAGE = "image" METADATA = "metadata" VIDEO = "video" VIDEO_IMAGE = "video_image" # long term this comes from database for admins to configure store_setting_overrides: dict[int, dict[str, Any]] = { StoreIds.SPOTIFY: { "is_feature_to_primary_artist_supported": True, "territory_standard": TerritoryStandard.ISO_3166_2016, }, StoreIds.AMAZON: { "ddex_commercial_model_to_use_type_map_extras": { DownloadStreamRights.STREAM: { CommercialModelType.SUBSCRIPTION: { UseType.PRIME_ON_DEMAND, }, } }, "is_feature_to_primary_artist_supported": True, "is_pricing_supported": True, "is_preorder_supported": True, }, StoreIds.CLICKN_CLEAR: { "is_pricing_supported": True, }, StoreIds.TIGER_MEDIA: { "is_pricing_supported": True, }, StoreIds.VEVO: { "distribution_feature_ids": [3], }, StoreIds.PRESTO_CLASSICAL: { "is_pricing_supported": True, }, StoreIds.VECTOR_TESTING: { "is_bundle_supported": True, }, } class Genres: CLASSICAL = 12 ROLE_PRIORITIES: dict[ParticipantRole, int] = { ParticipantRole.PERFORMER: 1, ParticipantRole.FEATURING: 2, ParticipantRole.REMIXER: 3, ParticipantRole.PRODUCER: 4, ParticipantRole.TRACK_WRITER: 5, ParticipantRole.PUBLISHER: 6, } class VideoTypes(Enum): OFFICIAL_MUSIC_VIDEO = "Official Music Video" LYRIC_MUSIC_VIDEO = "Lyric Music Video" PSEUDO_VIDEO = "Pseudo Video" BEHIND_THE_SCENES = "Behind the Scenes" PROMO = "Promo" LIVE_PERFORMANCE = "Live Performance" OTHER = "Other" class TrackTypes(Enum): MUSIC = "music" VIDEO = "video" class PricingFamily(Enum): MUSIC_RELEASE = 2 MUSIC_TRACK = 3 MUSIC_VIDEO = 5 class AssetType(Enum): ATMOS = "atmos" DIGITAL_BOOKLET = "digital_booklet" FLAC = "flac" H264_SD = "h264_sd" H264_HD = "h264_hd" JPG = "jpg" MP3_192 = "mp3_192" TIF = "tif" VIDEO_IMAGE_S2 = "video_image_s2" VIDEO_IMAGE_S5 = "video_image_s5" VIDEO_IMAGE_S10 = "video_image_s10" VIDEO_IMAGE_S11 = "video_image_s11" VIDEO_MASTER = "video_master" WAV = "wav" class EditionType(Enum): IMMERSIVE_EDITION = "ImmersiveEdition" NON_IMMERSIVE_EDITION = "NonImmersiveEdition"