librespot/protocol/proto/metadata.proto

332 lines
7.9 KiB
Protocol Buffer
Raw Normal View History

2024-12-15 19:51:02 +00:00
// Extracted from: Spotify 1.2.52.442 (windows)
syntax = "proto2";
package spotify.metadata;
option optimize_for = CODE_SIZE;
option java_outer_classname = "Metadata";
option java_package = "com.spotify.metadata.proto";
message Artist {
2024-12-15 19:51:02 +00:00
reserved 9;
optional bytes gid = 1;
optional string name = 2;
optional sint32 popularity = 3;
repeated TopTracks top_track = 4;
repeated AlbumGroup album_group = 5;
repeated AlbumGroup single_group = 6;
repeated AlbumGroup compilation_group = 7;
repeated AlbumGroup appears_on_group = 8;
repeated ExternalId external_id = 10;
repeated Image portrait = 11;
repeated Biography biography = 12;
repeated ActivityPeriod activity_period = 13;
repeated Restriction restriction = 14;
repeated Artist related = 15;
optional bool is_portrait_album_cover = 16;
optional ImageGroup portrait_group = 17;
repeated SalePeriod sale_period = 18;
repeated Availability availability = 20;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
message Album {
2024-12-15 19:51:02 +00:00
reserved 8;
optional bytes gid = 1;
optional string name = 2;
repeated Artist artist = 3;
2024-12-15 19:51:02 +00:00
optional Type type = 4;
enum Type {
ALBUM = 1;
SINGLE = 2;
COMPILATION = 3;
EP = 4;
AUDIOBOOK = 5;
PODCAST = 6;
}
2024-12-15 19:51:02 +00:00
optional string label = 5;
optional Date date = 6;
optional sint32 popularity = 7;
repeated Image cover = 9;
repeated ExternalId external_id = 10;
repeated Disc disc = 11;
repeated string review = 12;
repeated Copyright copyright = 13;
repeated Restriction restriction = 14;
repeated Album related = 15;
repeated SalePeriod sale_period = 16;
optional ImageGroup cover_group = 17;
optional string original_title = 18;
optional string version_title = 19;
optional string type_str = 20;
repeated Availability availability = 23;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
message Track {
optional bytes gid = 1;
optional string name = 2;
optional Album album = 3;
repeated Artist artist = 4;
optional sint32 number = 5;
optional sint32 disc_number = 6;
optional sint32 duration = 7;
optional sint32 popularity = 8;
optional bool explicit = 9;
repeated ExternalId external_id = 10;
repeated Restriction restriction = 11;
repeated AudioFile file = 12;
repeated Track alternative = 13;
repeated SalePeriod sale_period = 14;
repeated AudioFile preview = 15;
repeated string tags = 16;
optional int64 earliest_live_timestamp = 17;
optional bool has_lyrics = 18;
repeated Availability availability = 19;
optional Licensor licensor = 21;
repeated string language_of_performance = 22;
2024-12-15 19:51:02 +00:00
optional Audio original_audio = 24;
repeated ContentRating content_rating = 25;
optional string original_title = 27;
optional string version_title = 28;
repeated ArtistWithRole artist_with_role = 32;
2024-12-15 19:51:02 +00:00
optional string canonical_uri = 36;
repeated Video original_video = 38;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
message ArtistWithRole {
enum ArtistRole {
ARTIST_ROLE_UNKNOWN = 0;
ARTIST_ROLE_MAIN_ARTIST = 1;
ARTIST_ROLE_FEATURED_ARTIST = 2;
ARTIST_ROLE_REMIXER = 3;
ARTIST_ROLE_ACTOR = 4;
ARTIST_ROLE_COMPOSER = 5;
ARTIST_ROLE_CONDUCTOR = 6;
ARTIST_ROLE_ORCHESTRA = 7;
}
2024-12-15 19:51:02 +00:00
optional bytes artist_gid = 1;
optional string artist_name = 2;
optional ArtistRole role = 3;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
message Show {
optional bytes gid = 1;
optional string name = 2;
optional string description = 64;
optional sint32 deprecated_popularity = 65;
optional string publisher = 66;
optional string language = 67;
optional bool explicit = 68;
optional ImageGroup cover_image = 69;
repeated Episode episode = 70;
repeated Copyright copyright = 71;
repeated Restriction restriction = 72;
repeated string keyword = 73;
2024-12-15 19:51:02 +00:00
optional MediaType media_type = 74;
enum MediaType {
MIXED = 0;
AUDIO = 1;
VIDEO = 2;
}
2024-12-15 19:51:02 +00:00
optional ConsumptionOrder consumption_order = 75;
enum ConsumptionOrder {
SEQUENTIAL = 1;
EPISODIC = 2;
RECENT = 3;
}
2024-12-15 19:51:02 +00:00
repeated Availability availability = 78;
optional string trailer_uri = 83;
optional bool music_and_talk = 85;
2021-12-10 19:33:43 +00:00
optional bool is_audiobook = 89;
2024-12-15 19:51:02 +00:00
optional bool is_creator_channel = 90;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
message Episode {
optional bytes gid = 1;
optional string name = 2;
optional sint32 duration = 7;
repeated AudioFile audio = 12;
optional string description = 64;
optional sint32 number = 65;
optional Date publish_time = 66;
optional sint32 deprecated_popularity = 67;
optional ImageGroup cover_image = 68;
optional string language = 69;
optional bool explicit = 70;
optional Show show = 71;
repeated VideoFile video = 72;
repeated VideoFile video_preview = 73;
repeated AudioFile audio_preview = 74;
repeated Restriction restriction = 75;
optional ImageGroup freeze_frame = 76;
repeated string keyword = 77;
optional bool allow_background_playback = 81;
repeated Availability availability = 82;
optional string external_url = 83;
2024-12-15 19:51:02 +00:00
optional Audio original_audio = 84;
optional Episode.EpisodeType type = 87;
enum EpisodeType {
FULL = 0;
TRAILER = 1;
BONUS = 2;
2015-04-25 20:32:07 +00:00
}
2024-12-15 19:51:02 +00:00
optional bool music_and_talk = 91;
2021-12-10 19:33:43 +00:00
repeated ContentRating content_rating = 95;
optional bool is_audiobook_chapter = 96;
2024-12-15 19:51:02 +00:00
optional bool is_podcast_short = 97;
2015-04-25 20:32:07 +00:00
}
message Licensor {
optional bytes uuid = 1;
}
2024-12-15 19:51:02 +00:00
message Audio {
optional bytes uuid = 1;
}
message TopTracks {
optional string country = 1;
repeated Track track = 2;
}
message ActivityPeriod {
optional sint32 start_year = 1;
optional sint32 end_year = 2;
optional sint32 decade = 3;
}
message AlbumGroup {
repeated Album album = 1;
}
message Date {
optional sint32 year = 1;
optional sint32 month = 2;
optional sint32 day = 3;
optional sint32 hour = 4;
optional sint32 minute = 5;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2015-04-25 20:32:07 +00:00
message Image {
enum Size {
DEFAULT = 0;
SMALL = 1;
LARGE = 2;
XLARGE = 3;
2015-04-25 20:32:07 +00:00
}
2024-12-15 19:51:02 +00:00
optional bytes file_id = 1;
optional Size size = 2;
optional sint32 width = 3;
optional sint32 height = 4;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2015-04-25 20:32:07 +00:00
message ImageGroup {
repeated Image image = 1;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2015-04-25 20:32:07 +00:00
message Biography {
optional string text = 1;
repeated Image portrait = 2;
repeated ImageGroup portrait_group = 3;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2015-04-25 20:32:07 +00:00
message Disc {
optional sint32 number = 1;
optional string name = 2;
repeated Track track = 3;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2015-04-25 20:32:07 +00:00
message Copyright {
enum Type {
P = 0;
C = 1;
2015-04-25 20:32:07 +00:00
}
2024-12-15 19:51:02 +00:00
optional Type type = 1;
optional string text = 2;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2015-04-25 20:32:07 +00:00
message Restriction {
2019-10-08 17:20:18 +00:00
enum Catalogue {
AD = 0;
SUBSCRIPTION = 1;
CATALOGUE_ALL = 2;
SHUFFLE = 3;
COMMERCIAL = 4;
2019-10-08 17:20:18 +00:00
}
2024-12-15 19:51:02 +00:00
2015-04-25 20:32:07 +00:00
enum Type {
STREAMING = 0;
}
2024-12-15 19:51:02 +00:00
repeated Catalogue catalogue = 1;
optional Type type = 4;
repeated string catalogue_str = 5;
oneof country_restriction {
string countries_allowed = 2;
string countries_forbidden = 3;
2015-04-25 20:32:07 +00:00
}
}
2019-10-08 17:20:18 +00:00
message Availability {
repeated string catalogue_str = 1;
optional Date start = 2;
2019-10-08 17:20:18 +00:00
}
2015-04-25 20:32:07 +00:00
message SalePeriod {
repeated Restriction restriction = 1;
optional Date start = 2;
optional Date end = 3;
2015-04-25 20:32:07 +00:00
}
message ExternalId {
optional string type = 1;
optional string id = 2;
2015-04-25 20:32:07 +00:00
}
message AudioFile {
enum Format {
OGG_VORBIS_96 = 0;
OGG_VORBIS_160 = 1;
OGG_VORBIS_320 = 2;
MP3_256 = 3;
MP3_320 = 4;
MP3_160 = 5;
MP3_96 = 6;
MP3_160_ENC = 7;
AAC_24 = 8;
AAC_48 = 9;
FLAC_FLAC = 16;
2024-12-15 19:51:02 +00:00
XHE_AAC_24 = 18;
XHE_AAC_16 = 19;
XHE_AAC_12 = 20;
FLAC_FLAC_24BIT = 22;
2015-04-25 20:32:07 +00:00
}
2024-12-15 19:51:02 +00:00
optional bytes file_id = 1;
optional Format format = 2;
}
message Video {
optional bytes gid = 1;
2015-04-25 20:32:07 +00:00
}
2015-07-01 17:49:03 +00:00
2019-10-08 17:20:18 +00:00
message VideoFile {
optional bytes file_id = 1;
2018-09-28 18:10:22 +00:00
}
message ContentRating {
optional string country = 1;
repeated string tag = 2;
2018-09-28 18:10:22 +00:00
}