mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
266 lines
6.6 KiB
Protocol Buffer
266 lines
6.6 KiB
Protocol Buffer
syntax = "proto2";
|
|
|
|
message TopTracks {
|
|
optional string country = 0x1;
|
|
repeated Track track = 0x2;
|
|
}
|
|
|
|
message ActivityPeriod {
|
|
optional sint32 start_year = 0x1;
|
|
optional sint32 end_year = 0x2;
|
|
optional sint32 decade = 0x3;
|
|
}
|
|
|
|
message Artist {
|
|
optional bytes gid = 0x1;
|
|
optional string name = 0x2;
|
|
optional sint32 popularity = 0x3;
|
|
repeated TopTracks top_track = 0x4;
|
|
repeated AlbumGroup album_group = 0x5;
|
|
repeated AlbumGroup single_group = 0x6;
|
|
repeated AlbumGroup compilation_group = 0x7;
|
|
repeated AlbumGroup appears_on_group = 0x8;
|
|
repeated string genre = 0x9;
|
|
repeated ExternalId external_id = 0xa;
|
|
repeated Image portrait = 0xb;
|
|
repeated Biography biography = 0xc;
|
|
repeated ActivityPeriod activity_period = 0xd;
|
|
repeated Restriction restriction = 0xe;
|
|
repeated Artist related = 0xf;
|
|
optional bool is_portrait_album_cover = 0x10;
|
|
optional ImageGroup portrait_group = 0x11;
|
|
}
|
|
|
|
message AlbumGroup {
|
|
repeated Album album = 0x1;
|
|
}
|
|
|
|
message Date {
|
|
optional sint32 year = 0x1;
|
|
optional sint32 month = 0x2;
|
|
optional sint32 day = 0x3;
|
|
optional sint32 hour = 0x4;
|
|
optional sint32 minute = 0x5;
|
|
}
|
|
|
|
message Album {
|
|
optional bytes gid = 0x1;
|
|
optional string name = 0x2;
|
|
repeated Artist artist = 0x3;
|
|
optional Type typ = 0x4;
|
|
enum Type {
|
|
ALBUM = 0x1;
|
|
SINGLE = 0x2;
|
|
COMPILATION = 0x3;
|
|
EP = 0x4;
|
|
}
|
|
optional string label = 0x5;
|
|
optional Date date = 0x6;
|
|
optional sint32 popularity = 0x7;
|
|
repeated string genre = 0x8;
|
|
repeated Image cover = 0x9;
|
|
repeated ExternalId external_id = 0xa;
|
|
repeated Disc disc = 0xb;
|
|
repeated string review = 0xc;
|
|
repeated Copyright copyright = 0xd;
|
|
repeated Restriction restriction = 0xe;
|
|
repeated Album related = 0xf;
|
|
repeated SalePeriod sale_period = 0x10;
|
|
optional ImageGroup cover_group = 0x11;
|
|
}
|
|
|
|
message Track {
|
|
optional bytes gid = 0x1;
|
|
optional string name = 0x2;
|
|
optional Album album = 0x3;
|
|
repeated Artist artist = 0x4;
|
|
optional sint32 number = 0x5;
|
|
optional sint32 disc_number = 0x6;
|
|
optional sint32 duration = 0x7;
|
|
optional sint32 popularity = 0x8;
|
|
optional bool explicit = 0x9;
|
|
repeated ExternalId external_id = 0xa;
|
|
repeated Restriction restriction = 0xb;
|
|
repeated AudioFile file = 0xc;
|
|
repeated Track alternative = 0xd;
|
|
repeated SalePeriod sale_period = 0xe;
|
|
repeated AudioFile preview = 0xf;
|
|
}
|
|
|
|
message Image {
|
|
optional bytes file_id = 0x1;
|
|
optional Size size = 0x2;
|
|
enum Size {
|
|
DEFAULT = 0x0;
|
|
SMALL = 0x1;
|
|
LARGE = 0x2;
|
|
XLARGE = 0x3;
|
|
}
|
|
optional sint32 width = 0x3;
|
|
optional sint32 height = 0x4;
|
|
}
|
|
|
|
message ImageGroup {
|
|
repeated Image image = 0x1;
|
|
}
|
|
|
|
message Biography {
|
|
optional string text = 0x1;
|
|
repeated Image portrait = 0x2;
|
|
repeated ImageGroup portrait_group = 0x3;
|
|
}
|
|
|
|
message Disc {
|
|
optional sint32 number = 0x1;
|
|
optional string name = 0x2;
|
|
repeated Track track = 0x3;
|
|
}
|
|
|
|
message Copyright {
|
|
optional Type typ = 0x1;
|
|
enum Type {
|
|
P = 0x0;
|
|
C = 0x1;
|
|
}
|
|
optional string text = 0x2;
|
|
}
|
|
|
|
message Restriction {
|
|
enum Catalogue {
|
|
AD = 0;
|
|
SUBSCRIPTION = 1;
|
|
CATALOGUE_ALL = 2;
|
|
SHUFFLE = 3;
|
|
COMMERCIAL = 4;
|
|
}
|
|
enum Type {
|
|
STREAMING = 0x0;
|
|
}
|
|
repeated Catalogue catalogue = 0x1;
|
|
optional string countries_allowed = 0x2;
|
|
optional string countries_forbidden = 0x3;
|
|
optional Type typ = 0x4;
|
|
|
|
repeated string catalogue_str = 0x5;
|
|
}
|
|
|
|
message Availability {
|
|
repeated string catalogue_str = 0x1;
|
|
optional Date start = 0x2;
|
|
}
|
|
|
|
message SalePeriod {
|
|
repeated Restriction restriction = 0x1;
|
|
optional Date start = 0x2;
|
|
optional Date end = 0x3;
|
|
}
|
|
|
|
message ExternalId {
|
|
optional string typ = 0x1;
|
|
optional string id = 0x2;
|
|
}
|
|
|
|
message AudioFile {
|
|
optional bytes file_id = 0x1;
|
|
optional Format format = 0x2;
|
|
enum Format {
|
|
OGG_VORBIS_96 = 0x0;
|
|
OGG_VORBIS_160 = 0x1;
|
|
OGG_VORBIS_320 = 0x2;
|
|
MP3_256 = 0x3;
|
|
MP3_320 = 0x4;
|
|
MP3_160 = 0x5;
|
|
MP3_96 = 0x6;
|
|
MP3_160_ENC = 0x7;
|
|
// v4
|
|
// AAC_24 = 0x8;
|
|
// AAC_48 = 0x9;
|
|
MP4_128_DUAL = 0x8;
|
|
OTHER3 = 0x9;
|
|
AAC_160 = 0xa;
|
|
AAC_320 = 0xb;
|
|
MP4_128 = 0xc;
|
|
OTHER5 = 0xd;
|
|
}
|
|
}
|
|
|
|
message VideoFile {
|
|
optional bytes file_id = 1;
|
|
}
|
|
|
|
// Podcast Protos
|
|
message Show {
|
|
enum MediaType {
|
|
MIXED = 0;
|
|
AUDIO = 1;
|
|
VIDEO = 2;
|
|
}
|
|
enum ConsumptionOrder {
|
|
SEQUENTIAL = 1;
|
|
EPISODIC = 2;
|
|
RECENT = 3;
|
|
}
|
|
enum PassthroughEnum {
|
|
UNKNOWN = 0;
|
|
NONE = 1;
|
|
ALLOWED = 2;
|
|
}
|
|
optional bytes gid = 0x1;
|
|
optional string name = 0x2;
|
|
optional string description = 0x40;
|
|
optional sint32 deprecated_popularity = 0x41;
|
|
optional string publisher = 0x42;
|
|
optional string language = 0x43;
|
|
optional bool explicit = 0x44;
|
|
optional ImageGroup covers = 0x45;
|
|
repeated Episode episode = 0x46;
|
|
repeated Copyright copyright = 0x47;
|
|
repeated Restriction restriction = 0x48;
|
|
repeated string keyword = 0x49;
|
|
optional MediaType media_type = 0x4A;
|
|
optional ConsumptionOrder consumption_order = 0x4B;
|
|
optional bool interpret_restriction_using_geoip = 0x4C;
|
|
repeated Availability availability = 0x4E;
|
|
optional string country_of_origin = 0x4F;
|
|
repeated Category categories = 0x50;
|
|
optional PassthroughEnum passthrough = 0x51;
|
|
}
|
|
|
|
message Episode {
|
|
optional bytes gid = 0x1;
|
|
optional string name = 0x2;
|
|
optional sint32 duration = 0x7;
|
|
optional sint32 popularity = 0x8;
|
|
repeated AudioFile file = 0xc;
|
|
optional string description = 0x40;
|
|
optional sint32 number = 0x41;
|
|
optional Date publish_time = 0x42;
|
|
optional sint32 deprecated_popularity = 0x43;
|
|
optional ImageGroup covers = 0x44;
|
|
optional string language = 0x45;
|
|
optional bool explicit = 0x46;
|
|
optional Show show = 0x47;
|
|
repeated VideoFile video = 0x48;
|
|
repeated VideoFile video_preview = 0x49;
|
|
repeated AudioFile audio_preview = 0x4A;
|
|
repeated Restriction restriction = 0x4B;
|
|
optional ImageGroup freeze_frame = 0x4C;
|
|
repeated string keyword = 0x4D;
|
|
// Order of these two flags might be wrong!
|
|
optional bool suppress_monetization = 0x4E;
|
|
optional bool interpret_restriction_using_geoip = 0x4F;
|
|
|
|
optional bool allow_background_playback = 0x51;
|
|
repeated Availability availability = 0x52;
|
|
optional string external_url = 0x53;
|
|
optional OriginalAudio original_audio = 0x54;
|
|
}
|
|
|
|
message Category {
|
|
optional string name = 0x1;
|
|
repeated Category subcategories = 0x2;
|
|
}
|
|
|
|
message OriginalAudio {
|
|
optional bytes uuid = 0x1;
|
|
}
|