librespot/protocol/proto/player.proto
2024-12-16 22:57:12 +01:00

164 lines
4.6 KiB
Protocol Buffer

// Extracted from: Spotify 1.2.52.442 (windows)
syntax = "proto3";
package spotify.connectstate;
option optimize_for = CODE_SIZE;
option java_package = "com.spotify.connectstate.model";
message PlayerState {
reserved 26;
reserved 27;
reserved 28;
reserved 29;
reserved 30;
reserved 31;
reserved 34;
int64 timestamp = 1;
string context_uri = 2;
string context_url = 3;
Restrictions context_restrictions = 4;
PlayOrigin play_origin = 5;
ContextIndex index = 6;
ProvidedTrack track = 7;
string playback_id = 8;
double playback_speed = 9;
int64 position_as_of_timestamp = 10;
int64 duration = 11;
bool is_playing = 12;
bool is_paused = 13;
bool is_buffering = 14;
bool is_system_initiated = 15;
ContextPlayerOptions options = 16;
Restrictions restrictions = 17;
Suppressions suppressions = 18;
repeated ProvidedTrack prev_tracks = 19;
repeated ProvidedTrack next_tracks = 20;
map<string, string> context_metadata = 21;
map<string, string> page_metadata = 22;
string session_id = 23;
string queue_revision = 24;
int64 position = 25;
PlaybackQuality playback_quality = 32;
repeated string signals = 33;
string session_command_id = 35;
}
message ProvidedTrack {
reserved 11;
string uri = 1;
string uid = 2;
map<string, string> metadata = 3;
repeated string removed = 4;
repeated string blocked = 5;
string provider = 6;
Restrictions restrictions = 7;
string album_uri = 8;
repeated string disallow_reasons = 9;
string artist_uri = 10;
}
message ContextIndex {
uint32 page = 1;
uint32 track = 2;
}
message ModeRestrictions {
map<string, RestrictionReasons> values = 1;
}
message RestrictionReasons {
repeated string reasons = 1;
}
message Restrictions {
reserved 26;
reserved 27;
repeated string disallow_pausing_reasons = 1;
repeated string disallow_resuming_reasons = 2;
repeated string disallow_seeking_reasons = 3;
repeated string disallow_peeking_prev_reasons = 4;
repeated string disallow_peeking_next_reasons = 5;
repeated string disallow_skipping_prev_reasons = 6;
repeated string disallow_skipping_next_reasons = 7;
repeated string disallow_toggling_repeat_context_reasons = 8;
repeated string disallow_toggling_repeat_track_reasons = 9;
repeated string disallow_toggling_shuffle_reasons = 10;
repeated string disallow_set_queue_reasons = 11;
repeated string disallow_interrupting_playback_reasons = 12;
repeated string disallow_transferring_playback_reasons = 13;
repeated string disallow_remote_control_reasons = 14;
repeated string disallow_inserting_into_next_tracks_reasons = 15;
repeated string disallow_inserting_into_context_tracks_reasons = 16;
repeated string disallow_reordering_in_next_tracks_reasons = 17;
repeated string disallow_reordering_in_context_tracks_reasons = 18;
repeated string disallow_removing_from_next_tracks_reasons = 19;
repeated string disallow_removing_from_context_tracks_reasons = 20;
repeated string disallow_updating_context_reasons = 21;
repeated string disallow_playing_reasons = 22;
repeated string disallow_stopping_reasons = 23;
repeated string disallow_add_to_queue_reasons = 24;
repeated string disallow_setting_playback_speed_reasons = 25;
map<string, ModeRestrictions> disallow_setting_modes = 28;
map<string, RestrictionReasons> disallow_signals = 29;
}
message PlayOrigin {
string feature_identifier = 1;
string feature_version = 2;
string view_uri = 3;
string external_referrer = 4;
string referrer_identifier = 5;
string device_identifier = 6;
repeated string feature_classes = 7;
string restriction_identifier = 8;
}
message ContextPlayerOptions {
bool shuffling_context = 1;
bool repeating_context = 2;
bool repeating_track = 3;
map<string, string> modes = 5;
optional float playback_speed = 4;
}
message Suppressions {
repeated string providers = 1;
}
message PlaybackQuality {
BitrateLevel bitrate_level = 1;
BitrateStrategy strategy = 2;
BitrateLevel target_bitrate_level = 3;
bool target_bitrate_available = 4;
HiFiStatus hifi_status = 5;
}
enum BitrateLevel {
unknown_bitrate_level = 0;
low = 1;
normal = 2;
high = 3;
very_high = 4;
hifi = 5;
hifi24 = 6;
}
enum BitrateStrategy {
unknown_strategy = 0;
best_matching = 1;
backend_advised = 2;
offlined_file = 3;
cached_file = 4;
local_file = 5;
}
enum HiFiStatus {
none = 0;
off = 1;
on = 2;
}