This commit is contained in:
a 2023-01-11 11:08:26 -06:00
commit 66c522421f
473 changed files with 36068 additions and 0 deletions

16
go.mod Normal file
View File

@ -0,0 +1,16 @@
module tuxpa.in/a/goplayd
go 1.19
require (
google.golang.org/grpc v1.52.0
google.golang.org/protobuf v1.28.1
)
require (
github.com/golang/protobuf v1.5.2 // indirect
golang.org/x/net v0.4.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 // indirect
)

20
go.sum Normal file
View File

@ -0,0 +1,20 @@
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk=
google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=

7
lib/jukebox/jukebox.go Normal file
View File

@ -0,0 +1,7 @@
package jukebox
type Jukebox struct {
}
type Track struct {
}

View File

@ -0,0 +1,4 @@
package spotify
type Source struct {
}

50
lib/spot/proto.go Normal file
View File

@ -0,0 +1,50 @@
package spot
import (
"context"
"encoding/json"
"net/http"
"google.golang.org/grpc"
)
var defaultResolvers = []string{
"http://apresolve.spotify.com",
}
type Client struct {
Resolver string
Endpoints ApResolve
grpc *grpc.ClientConn
}
type ApResolve struct {
ApList []string `json:"ap_list"`
}
func NewClient(resolver string) (*Client, error) {
c := &Client{Resolver: resolver}
err := c.discover()
if err != nil {
return nil, err
}
return c, nil
}
func (c *Client) Connect(ctx context.Context) error {
conn, err := grpc.DialContext(ctx, c.Endpoints.ApList[0])
if err != nil {
return err
}
c.grpc = conn
return nil
}
func (c *Client) discover() error {
resp, err := http.Get(c.Resolver)
if err != nil {
return err
}
defer resp.Body.Close()
return json.NewDecoder(resp.Body).Decode(&c.Endpoints)
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdContext {
optional string preceding_content_uri = 1;
optional string preceding_playback_id = 2;
optional int32 preceding_end_position = 3;
repeated string ad_ids = 4;
optional string ad_request_id = 5;
optional string succeeding_content_uri = 6;
optional string succeeding_playback_id = 7;
optional int32 succeeding_start_position = 8;
optional int32 preceding_duration = 9;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdDecisionEvent {
optional string request_id = 1;
optional string decision_request_id = 2;
optional string decision_type = 3;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdError {
optional string request_type = 1;
optional string error_message = 2;
optional int64 http_error_code = 3;
optional string request_url = 4;
optional string tracking_event = 5;
}

View File

@ -0,0 +1,28 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdEvent {
optional string request_id = 1;
optional string app_startup_id = 2;
optional string ad_id = 3;
optional string lineitem_id = 4;
optional string creative_id = 5;
optional string slot = 6;
optional string format = 7;
optional string type = 8;
optional bool skippable = 9;
optional string event = 10;
optional string event_source = 11;
optional string event_reason = 12;
optional int32 event_sequence_num = 13;
optional int32 position = 14;
optional int32 duration = 15;
optional bool in_focus = 16;
optional float volume = 17;
optional string product_name = 18;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdRequestEvent {
optional string feature_identifier = 1;
optional string requested_ad_type = 2;
optional int64 latency_ms = 3;
repeated string requested_ad_types = 4;
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AdSlotEvent {
optional string event = 1;
optional string ad_id = 2;
optional string lineitem_id = 3;
optional string creative_id = 4;
optional string slot = 5;
optional string format = 6;
optional bool in_focus = 7;
optional string app_startup_id = 8;
optional string request_id = 9;
}

View File

@ -0,0 +1,11 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AmazonWakeUpTime {
optional int64 delay_to_online = 1;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioDriverError {
optional int64 error_code = 1;
optional string location = 2;
optional string driver_name = 3;
optional string additional_data = 4;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioDriverInfo {
optional string driver_name = 1;
optional string output_device_name = 2;
optional string output_device_category = 3;
optional string reason = 4;
}

View File

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioFileSelection {
optional bytes playback_id = 1;
optional string strategy_name = 2;
optional int64 bitrate = 3;
optional bytes predict_id = 4;
optional string file_origin = 5;
optional int32 target_bitrate = 6;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioOffliningSettingsReport {
optional string default_sync_bitrate_product_state = 1;
optional int64 user_selected_sync_bitrate = 2;
optional int64 sync_bitrate = 3;
optional bool sync_over_cellular = 4;
optional string primary_resource_type = 5;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioRateLimit {
optional string driver_name = 1;
optional string output_device_name = 2;
optional string output_device_category = 3;
optional int64 max_size = 4;
optional int64 refill_per_milliseconds = 5;
optional int64 frames_requested = 6;
optional int64 frames_acquired = 7;
optional bytes playback_id = 8;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioSessionEvent {
optional string event = 1;
optional string context = 2;
optional string json_data = 3;
}

View File

@ -0,0 +1,30 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioSettingsReport {
optional bool offline_mode = 1;
optional string default_play_bitrate_product_state = 2;
optional int64 user_selected_bitrate = 3;
optional int64 play_bitrate = 4;
optional bool low_bitrate_on_cellular = 5;
optional string default_sync_bitrate_product_state = 6;
optional int64 user_selected_sync_bitrate = 7;
optional int64 sync_bitrate = 8;
optional bool sync_over_cellular = 9;
optional string enable_gapless_product_state = 10;
optional bool enable_gapless = 11;
optional string enable_crossfade_product_state = 12;
optional bool enable_crossfade = 13;
optional int64 crossfade_time = 14;
optional bool enable_normalization = 15;
optional int64 playback_speed = 16;
optional string audio_loudness_level = 17;
optional bool enable_automix = 18;
optional bool enable_silence_trimmer = 19;
optional bool enable_mono_downmixer = 20;
}

View File

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message AudioStreamingSettingsReport {
optional string default_play_bitrate_product_state = 1;
optional int64 user_selected_play_bitrate_cellular = 2;
optional int64 user_selected_play_bitrate_wifi = 3;
optional int64 play_bitrate_cellular = 4;
optional int64 play_bitrate_wifi = 5;
optional bool allow_downgrade = 6;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message BoomboxPlaybackInstrumentation {
optional bytes playback_id = 1;
optional bool was_playback_paused = 2;
repeated string dimensions = 3;
map<string, int64> total_buffer_size = 4;
map<string, int64> number_of_calls = 5;
map<string, int64> total_duration = 6;
map<string, int64> first_call_time = 7;
map<string, int64> last_call_time = 8;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message BrokenObject {
optional string type = 1;
optional string id = 2;
optional int64 error_code = 3;
optional bytes playback_id = 4;
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CacheError {
optional int64 error_code = 1;
optional int64 os_error_code = 2;
optional string realm = 3;
optional bytes file_id = 4;
optional int64 num_errors = 5;
optional string cache_path = 6;
optional int64 size = 7;
optional int64 range_start = 8;
optional int64 range_end = 9;
}

View File

@ -0,0 +1,25 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CachePruningReport {
optional bytes cache_id = 1;
optional int64 time_spent_pruning_ms = 2;
optional int64 size_before_prune_kb = 3;
optional int64 size_after_prune_kb = 4;
optional int64 num_entries_pruned = 5;
optional int64 num_entries_pruned_expired = 6;
optional int64 size_entries_pruned_expired_kb = 7;
optional int64 num_entries_pruned_limit = 8;
optional int64 size_pruned_limit_kb = 9;
optional int64 num_entries_pruned_never_used = 10;
optional int64 size_pruned_never_used_kb = 11;
optional int64 num_entries_pruned_max_realm_size = 12;
optional int64 size_pruned_max_realm_size_kb = 13;
optional int64 num_entries_pruned_min_free_space = 14;
optional int64 size_pruned_min_free_space_kb = 15;
}

View File

@ -0,0 +1,23 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CacheRealmPruningReport {
optional bytes cache_id = 1;
optional int64 realm_id = 2;
optional int64 num_entries_pruned = 3;
optional int64 num_entries_pruned_expired = 4;
optional int64 size_entries_pruned_expired_kb = 5;
optional int64 num_entries_pruned_limit = 6;
optional int64 size_pruned_limit_kb = 7;
optional int64 num_entries_pruned_never_used = 8;
optional int64 size_pruned_never_used_kb = 9;
optional int64 num_entries_pruned_max_realm_size = 10;
optional int64 size_pruned_max_realm_size_kb = 11;
optional int64 num_entries_pruned_min_free_space = 12;
optional int64 size_pruned_min_free_space_kb = 13;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CacheRealmReport {
optional bytes cache_id = 1;
optional int64 realm_id = 2;
optional int64 num_entries = 3;
optional int64 num_locked_entries = 4;
optional int64 num_locked_entries_current_user = 5;
optional int64 num_full_entries = 6;
optional int64 size_kb = 7;
optional int64 locked_size_kb = 8;
}

View File

@ -0,0 +1,32 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CacheReport {
optional bytes cache_id = 1;
optional string cache_path = 21;
optional string volatile_path = 22;
optional int64 max_cache_size = 2;
optional int64 free_space = 3;
optional int64 total_space = 4;
optional int64 cache_age = 5;
optional int64 num_users_with_locked_entries = 6;
optional int64 permanent_files = 7;
optional int64 permanent_size_kb = 8;
optional int64 unknown_permanent_files = 9;
optional int64 unknown_permanent_size_kb = 10;
optional int64 volatile_files = 11;
optional int64 volatile_size_kb = 12;
optional int64 unknown_volatile_files = 13;
optional int64 unknown_volatile_size_kb = 14;
optional int64 num_entries = 15;
optional int64 num_locked_entries = 16;
optional int64 num_locked_entries_current_user = 17;
optional int64 num_full_entries = 18;
optional int64 size_kb = 19;
optional int64 locked_size_kb = 20;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ClientLocale {
optional string client_default_locale = 1;
optional string user_specified_locale = 2;
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ColdStartupSequence {
optional string terminal_state = 1;
map<string, int64> steps = 2;
map<string, string> metadata = 3;
optional string connection_type = 4;
optional string initial_application_state = 5;
optional string terminal_application_state = 6;
optional string view_load_sequence_id = 7;
optional int32 device_year_class = 8;
map<string, int64> subdurations = 9;
}

View File

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CollectionLevelDbInfo {
optional string bucket = 1;
optional bool use_leveldb = 2;
optional bool migration_from_file_ok = 3;
optional bool index_check_ok = 4;
optional bool leveldb_works = 5;
optional bool already_migrated = 6;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message CollectionOfflineControllerEmptyTrackList {
optional string link_type = 1;
optional bool consistent_with_collection = 2;
optional int64 collection_size = 3;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConfigurationApplied {
optional int64 last_rcs_fetch_time = 1;
optional string installation_id = 2;
repeated int32 policy_group_ids = 3;
optional string configuration_assignment_id = 4;
optional string rc_client_id = 5;
optional string rc_client_version = 6;
optional string platform = 7;
optional string fetch_type = 8;
}

View File

@ -0,0 +1,31 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConfigurationFetched {
optional int64 last_rcs_fetch_time = 1;
optional string installation_id = 2;
optional string configuration_assignment_id = 3;
optional string property_set_id = 4;
optional string attributes_set_id = 5;
optional string rc_client_id = 6;
optional string rc_client_version = 7;
optional string rc_sdk_version = 8;
optional string platform = 9;
optional string fetch_type = 10;
optional int64 latency = 11;
optional int64 payload_size = 12;
optional int32 status_code = 13;
optional string error_reason = 14;
optional string error_message = 15;
optional string error_reason_configuration_resolve = 16;
optional string error_message_configuration_resolve = 17;
optional string error_reason_account_attributes = 18;
optional string error_message_account_attributes = 19;
optional int32 error_code_account_attributes = 20;
optional int32 error_code_configuration_resolve = 21;
}

View File

@ -0,0 +1,31 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConfigurationFetchedNonAuth {
optional int64 last_rcs_fetch_time = 1;
optional string installation_id = 2;
optional string configuration_assignment_id = 3;
optional string property_set_id = 4;
optional string attributes_set_id = 5;
optional string rc_client_id = 6;
optional string rc_client_version = 7;
optional string rc_sdk_version = 8;
optional string platform = 9;
optional string fetch_type = 10;
optional int64 latency = 11;
optional int64 payload_size = 12;
optional int32 status_code = 13;
optional string error_reason = 14;
optional string error_message = 15;
optional string error_reason_configuration_resolve = 16;
optional string error_message_configuration_resolve = 17;
optional string error_reason_account_attributes = 18;
optional string error_message_account_attributes = 19;
optional int32 error_code_account_attributes = 20;
optional int32 error_code_configuration_resolve = 21;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectCredentialsRequest {
optional string token_type = 1;
optional string client_id = 2;
}

View File

@ -0,0 +1,22 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectDeviceDiscovered {
optional string device_id = 1;
optional string discover_method = 2;
optional string discovered_device_id = 3;
optional string discovered_device_type = 4;
optional string discovered_library_version = 5;
optional string discovered_brand_display_name = 6;
optional string discovered_model_display_name = 7;
optional string discovered_client_id = 8;
optional string discovered_product_id = 9;
optional string discovered_device_availablilty = 10;
optional string discovered_device_public_key = 11;
optional bool capabilities_resolved = 12;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectDialError {
optional string type = 1;
optional string request = 2;
optional string response = 3;
optional int64 error = 4;
optional string context = 5;
}

View File

@ -0,0 +1,17 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectMdnsPacketParseError {
optional string type = 1;
optional string buffer = 2;
optional string ttl = 3;
optional string txt = 4;
optional string host = 5;
optional string discovery_name = 6;
optional string context = 7;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectPullFailure {
optional bytes transfer_data = 1;
optional int64 error_code = 2;
map<string, string> reasons = 3;
}

View File

@ -0,0 +1,29 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectTransferResult {
optional string result = 1;
optional string device_type = 2;
optional string discovery_class = 3;
optional string device_model = 4;
optional string device_brand = 5;
optional string device_software_version = 6;
optional int64 duration = 7;
optional string device_client_id = 8;
optional string transfer_intent_id = 9;
optional string transfer_debug_log = 10;
optional string error_code = 11;
optional int32 http_response_code = 12;
optional string initial_device_state = 13;
optional int32 retry_count = 14;
optional int32 login_retry_count = 15;
optional int64 login_duration = 16;
optional string target_device_id = 17;
optional bool target_device_is_local = 18;
optional string final_device_state = 19;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectionError {
optional int64 error_code = 1;
optional string ap = 2;
optional string proxy = 3;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectionInfo {
optional string ap = 1;
optional string proxy = 2;
optional bool user_initated_login = 3;
optional string reachability_type = 4;
optional string web_installer_unique_id = 5;
optional string ap_resolve_source = 6;
optional string address_type = 7;
optional bool ipv6_failed = 8;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ConnectionStateChange {
optional string type = 1;
optional string old = 2;
optional string new = 3;
}

View File

@ -0,0 +1,17 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DefaultConfigurationApplied {
optional string installation_id = 1;
optional string configuration_assignment_id = 2;
optional string rc_client_id = 3;
optional string rc_client_version = 4;
optional string platform = 5;
optional string fetch_type = 6;
optional string reason = 7;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopAuthenticationFailureNonAuth {
optional string action_hash = 1;
optional string error_category = 2;
optional int32 error_code = 3;
}

View File

@ -0,0 +1,11 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopAuthenticationSuccess {
optional string action_hash = 1;
}

View File

@ -0,0 +1,106 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopDeviceInformation {
optional string os_platform = 1;
optional string os_version = 2;
optional string computer_manufacturer = 3;
optional string mac_computer_model = 4;
optional string mac_computer_model_family = 5;
optional bool computer_has_internal_battery = 6;
optional bool computer_is_currently_running_on_battery_power = 7;
optional string mac_cpu_product_name = 8;
optional int64 mac_cpu_family_code = 9;
optional int64 cpu_num_physical_cores = 10;
optional int64 cpu_num_logical_cores = 11;
optional int64 cpu_clock_frequency_herz = 12;
optional int64 cpu_level_1_cache_size_bytes = 13;
optional int64 cpu_level_2_cache_size_bytes = 14;
optional int64 cpu_level_3_cache_size_bytes = 15;
optional bool cpu_is_64_bit_capable = 16;
optional int64 computer_ram_size_bytes = 17;
optional int64 computer_ram_speed_herz = 18;
optional int64 num_graphics_cards = 19;
optional int64 num_connected_screens = 20;
optional string app_screen_model_name = 21;
optional double app_screen_width_logical_points = 22;
optional double app_screen_height_logical_points = 23;
optional double mac_app_screen_scale_factor = 24;
optional double app_screen_physical_size_inches = 25;
optional int64 app_screen_bits_per_pixel = 26;
optional bool app_screen_supports_dci_p3_color_gamut = 27;
optional bool app_screen_is_built_in = 28;
optional string app_screen_graphics_card_model = 29;
optional int64 app_screen_graphics_card_vram_size_bytes = 30;
optional bool mac_app_screen_currently_contains_the_dock = 31;
optional bool mac_app_screen_currently_contains_active_menu_bar = 32;
optional bool boot_disk_is_known_ssd = 33;
optional string mac_boot_disk_connection_type = 34;
optional int64 boot_disk_capacity_bytes = 35;
optional int64 boot_disk_free_space_bytes = 36;
optional bool application_disk_is_same_as_boot_disk = 37;
optional bool application_disk_is_known_ssd = 38;
optional string mac_application_disk_connection_type = 39;
optional int64 application_disk_capacity_bytes = 40;
optional int64 application_disk_free_space_bytes = 41;
optional bool application_cache_disk_is_same_as_boot_disk = 42;
optional bool application_cache_disk_is_known_ssd = 43;
optional string mac_application_cache_disk_connection_type = 44;
optional int64 application_cache_disk_capacity_bytes = 45;
optional int64 application_cache_disk_free_space_bytes = 46;
optional bool has_pointing_device = 47;
optional bool has_builtin_pointing_device = 48;
optional bool has_touchpad = 49;
optional bool has_keyboard = 50;
optional bool has_builtin_keyboard = 51;
optional bool mac_has_touch_bar = 52;
optional bool has_touch_screen = 53;
optional bool has_pen_input = 54;
optional bool has_game_controller = 55;
optional bool has_bluetooth_support = 56;
optional int64 bluetooth_link_manager_version = 57;
optional string bluetooth_version_string = 58;
optional int64 num_audio_output_devices = 59;
optional string default_audio_output_device_name = 60;
optional string default_audio_output_device_manufacturer = 61;
optional double default_audio_output_device_current_sample_rate = 62;
optional int64 default_audio_output_device_current_bit_depth = 63;
optional int64 default_audio_output_device_current_buffer_size = 64;
optional int64 default_audio_output_device_current_num_channels = 65;
optional double default_audio_output_device_maximum_sample_rate = 66;
optional int64 default_audio_output_device_maximum_bit_depth = 67;
optional int64 default_audio_output_device_maximum_num_channels = 68;
optional bool default_audio_output_device_is_builtin = 69;
optional bool default_audio_output_device_is_virtual = 70;
optional string mac_default_audio_output_device_transport_type = 71;
optional string mac_default_audio_output_device_terminal_type = 72;
optional int64 num_video_capture_devices = 73;
optional string default_video_capture_device_manufacturer = 74;
optional string default_video_capture_device_model = 75;
optional string default_video_capture_device_name = 76;
optional int64 default_video_capture_device_image_width = 77;
optional int64 default_video_capture_device_image_height = 78;
optional string mac_default_video_capture_device_transport_type = 79;
optional bool default_video_capture_device_is_builtin = 80;
optional int64 num_active_network_interfaces = 81;
optional string mac_main_network_interface_name = 82;
optional string mac_main_network_interface_type = 83;
optional bool main_network_interface_supports_ipv4 = 84;
optional bool main_network_interface_supports_ipv6 = 85;
optional string main_network_interface_hardware_vendor = 86;
optional string main_network_interface_hardware_model = 87;
optional int64 main_network_interface_medium_speed_bps = 88;
optional int64 main_network_interface_link_speed_bps = 89;
optional double system_up_time_including_sleep_seconds = 90;
optional double system_up_time_awake_seconds = 91;
optional double app_up_time_including_sleep_seconds = 92;
optional string system_user_preferred_language_code = 93;
optional string system_user_preferred_locale = 94;
optional string mac_app_system_localization_language = 95;
optional string app_localization_language = 96;
}

View File

@ -0,0 +1,11 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopGPUAccelerationInfo {
optional bool is_enabled = 1;
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopHighMemoryUsage {
optional bool is_continuation_event = 1;
optional double sample_time_interval_seconds = 2;
optional int64 win_committed_bytes = 3;
optional int64 win_peak_committed_bytes = 4;
optional int64 win_working_set_bytes = 5;
optional int64 win_peak_working_set_bytes = 6;
optional int64 mac_virtual_size_bytes = 7;
optional int64 mac_resident_size_bytes = 8;
optional int64 mac_footprint_bytes = 9;
}

View File

@ -0,0 +1,88 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopPerformanceIssue {
optional string event_type = 1;
optional bool is_continuation_event = 2;
optional double sample_time_interval_seconds = 3;
optional string computer_platform = 4;
optional double last_seen_main_thread_latency_seconds = 5;
optional double last_seen_core_thread_latency_seconds = 6;
optional double total_spotify_processes_cpu_load_percent = 7;
optional double main_process_cpu_load_percent = 8;
optional int64 mac_main_process_vm_size_bytes = 9;
optional int64 mac_main_process_resident_size_bytes = 10;
optional double mac_main_process_num_page_faults_per_second = 11;
optional double mac_main_process_num_pageins_per_second = 12;
optional double mac_main_process_num_cow_faults_per_second = 13;
optional double mac_main_process_num_context_switches_per_second = 14;
optional int64 main_process_num_total_threads = 15;
optional int64 main_process_num_running_threads = 16;
optional double renderer_process_cpu_load_percent = 17;
optional int64 mac_renderer_process_vm_size_bytes = 18;
optional int64 mac_renderer_process_resident_size_bytes = 19;
optional double mac_renderer_process_num_page_faults_per_second = 20;
optional double mac_renderer_process_num_pageins_per_second = 21;
optional double mac_renderer_process_num_cow_faults_per_second = 22;
optional double mac_renderer_process_num_context_switches_per_second = 23;
optional int64 renderer_process_num_total_threads = 24;
optional int64 renderer_process_num_running_threads = 25;
optional double system_total_cpu_load_percent = 26;
optional int64 mac_system_total_free_memory_size_bytes = 27;
optional int64 mac_system_total_active_memory_size_bytes = 28;
optional int64 mac_system_total_inactive_memory_size_bytes = 29;
optional int64 mac_system_total_wired_memory_size_bytes = 30;
optional int64 mac_system_total_compressed_memory_size_bytes = 31;
optional double mac_system_current_num_pageins_per_second = 32;
optional double mac_system_current_num_pageouts_per_second = 33;
optional double mac_system_current_num_page_faults_per_second = 34;
optional double mac_system_current_num_cow_faults_per_second = 35;
optional int64 system_current_num_total_processes = 36;
optional int64 system_current_num_total_threads = 37;
optional int64 computer_boot_disk_free_space_bytes = 38;
optional int64 application_disk_free_space_bytes = 39;
optional int64 application_cache_disk_free_space_bytes = 40;
optional bool computer_is_currently_running_on_battery_power = 41;
optional double computer_remaining_battery_capacity_percent = 42;
optional double computer_estimated_remaining_battery_time_seconds = 43;
optional int64 mac_computer_num_available_logical_cpu_cores_due_to_power_management = 44;
optional double mac_computer_current_processor_speed_percent_due_to_power_management = 45;
optional double mac_computer_current_cpu_time_limit_percent_due_to_power_management = 46;
optional double app_screen_width_points = 47;
optional double app_screen_height_points = 48;
optional double mac_app_screen_scale_factor = 49;
optional int64 app_screen_bits_per_pixel = 50;
optional bool app_screen_supports_dci_p3_color_gamut = 51;
optional bool app_screen_is_built_in = 52;
optional string app_screen_graphics_card_model = 53;
optional int64 app_screen_graphics_card_vram_size_bytes = 54;
optional double app_window_width_points = 55;
optional double app_window_height_points = 56;
optional double app_window_percentage_on_screen = 57;
optional double app_window_percentage_non_obscured = 58;
optional double system_up_time_including_sleep_seconds = 59;
optional double system_up_time_awake_seconds = 60;
optional double app_up_time_including_sleep_seconds = 61;
optional double computer_time_since_last_sleep_start_seconds = 62;
optional double computer_time_since_last_sleep_end_seconds = 63;
optional bool mac_system_user_session_is_currently_active = 64;
optional double mac_system_time_since_last_user_session_deactivation_seconds = 65;
optional double mac_system_time_since_last_user_session_reactivation_seconds = 66;
optional bool application_is_currently_active = 67;
optional bool application_window_is_currently_visible = 68;
optional bool mac_application_window_is_currently_minimized = 69;
optional bool application_window_is_currently_fullscreen = 70;
optional bool mac_application_is_currently_hidden = 71;
optional bool application_user_is_currently_logged_in = 72;
optional double application_time_since_last_user_log_in = 73;
optional double application_time_since_last_user_log_out = 74;
optional bool application_is_playing_now = 75;
optional string application_currently_playing_type = 76;
optional string application_currently_playing_uri = 77;
optional string application_currently_playing_ad_id = 78;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopUpdateDownloadComplete {
optional int64 revision = 1;
optional bool is_critical = 2;
optional string source = 3;
optional bool is_successful = 4;
optional bool is_employee = 5;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopUpdateDownloadError {
optional int64 revision = 1;
optional bool is_critical = 2;
optional string error_message = 3;
optional string source = 4;
optional bool is_employee = 5;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopUpdateMessageAction {
optional bool will_download = 1;
optional int64 this_message_from_revision = 2;
optional int64 this_message_to_revision = 3;
optional bool is_critical = 4;
optional int64 already_downloaded_from_revision = 5;
optional int64 already_downloaded_to_revision = 6;
optional string source = 7;
optional bool is_employee = 8;
}

View File

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopUpdateMessageProcessed {
optional bool success = 1;
optional string source = 2;
optional int64 revision = 3;
optional bool is_critical = 4;
optional string binary_hash = 5;
optional bool is_employee = 6;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DesktopUpdateResponse {
optional int64 status_code = 1;
optional int64 request_time_ms = 2;
optional int64 payload_size = 3;
optional bool is_employee = 4;
optional string error_message = 5;
}

View File

@ -0,0 +1,55 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message Download {
optional bytes file_id = 1;
optional bytes playback_id = 2;
optional int64 bytes_from_ap = 3;
optional int64 waste_from_ap = 4;
optional int64 reqs_from_ap = 5;
optional int64 error_from_ap = 6;
optional int64 bytes_from_cdn = 7;
optional int64 waste_from_cdn = 8;
optional int64 bytes_from_cache = 9;
optional int64 content_size = 10;
optional string content_type = 11;
optional int64 ap_initial_latency = 12;
optional int64 ap_max_latency = 13;
optional int64 ap_min_latency = 14;
optional double ap_avg_latency = 15;
optional int64 ap_median_latency = 16;
optional double ap_avg_bw = 17;
optional int64 cdn_initial_latency = 18;
optional int64 cdn_max_latency = 19;
optional int64 cdn_min_latency = 20;
optional double cdn_avg_latency = 21;
optional int64 cdn_median_latency = 22;
optional int64 cdn_64k_initial_latency = 23;
optional int64 cdn_64k_max_latency = 24;
optional int64 cdn_64k_min_latency = 25;
optional double cdn_64k_avg_latency = 26;
optional int64 cdn_64k_median_latency = 27;
optional double cdn_avg_bw = 28;
optional double cdn_initial_bw_estimate = 29;
optional string cdn_uri_scheme = 30;
optional string cdn_domain = 31;
optional string cdn_socket_reuse = 32;
optional int64 num_cache_error = 33;
optional int64 bytes_from_carrier = 34;
optional int64 bytes_from_unknown = 35;
optional int64 bytes_from_wifi = 36;
optional int64 bytes_from_ethernet = 37;
optional string request_type = 38;
optional int64 total_time = 39;
optional int64 bitrate = 40;
optional int64 reqs_from_cdn = 41;
optional int64 error_from_cdn = 42;
optional string file_origin = 43;
optional string initial_disk_state = 44;
optional bool locked = 45;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message DrmRequestFailure {
optional string reason = 1;
optional int64 error_code = 2;
optional bool fatal = 3;
optional bytes playback_id = 4;
}

View File

@ -0,0 +1,34 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message EndAd {
optional bytes file_id = 1;
optional bytes playback_id = 2;
optional bytes song_id = 3;
optional string source_start = 4;
optional string reason_start = 5;
optional string source_end = 6;
optional string reason_end = 7;
optional int64 bytes_played = 8;
optional int64 bytes_in_song = 9;
optional int64 ms_played = 10;
optional int64 ms_total_est = 11;
optional int64 ms_rcv_latency = 12;
optional int64 n_seekback = 13;
optional int64 ms_seekback = 14;
optional int64 n_seekfwd = 15;
optional int64 ms_seekfwd = 16;
optional int64 ms_latency = 17;
optional int64 n_stutter = 18;
optional int64 p_lowbuffer = 19;
optional bool skipped = 20;
optional bool ad_clicked = 21;
optional string token = 22;
optional int64 client_ad_count = 23;
optional int64 client_campaign_count = 24;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message EventSenderInternalErrorNonAuth {
optional string error_message = 1;
optional string error_type = 2;
optional string error_context = 3;
optional int32 error_code = 4;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message EventSenderStats {
map<string, int64> storage_size = 1;
map<string, int64> sequence_number_min = 2;
map<string, int64> sequence_number_next = 3;
}

View File

@ -0,0 +1,23 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message EventSenderStats2NonAuth {
repeated bytes sequence_ids = 1;
repeated string event_names = 2;
repeated int32 loss_stats_num_entries_per_sequence_id = 3;
repeated int32 loss_stats_event_name_index = 4;
repeated int64 loss_stats_storage_sizes = 5;
repeated int64 loss_stats_sequence_number_mins = 6;
repeated int64 loss_stats_sequence_number_nexts = 7;
repeated int32 ratelimiter_stats_event_name_index = 8;
repeated int64 ratelimiter_stats_drop_count = 9;
repeated int32 drop_list_num_entries_per_sequence_id = 10;
repeated int32 drop_list_event_name_index = 11;
repeated int64 drop_list_counts_total = 12;
repeated int64 drop_list_counts_unreported = 13;
}

View File

@ -0,0 +1,20 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ExternalDeviceInfo {
optional string type = 1;
optional string subtype = 2;
optional string reason = 3;
optional bool taken_over = 4;
optional int64 num_tracks = 5;
optional int64 num_purchased_tracks = 6;
optional int64 num_playlists = 7;
optional string error = 8;
optional bool full = 9;
optional bool sync_all = 10;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message GetInfoFailures {
optional string device_id = 1;
optional int64 error_code = 2;
optional string request = 3;
optional string response_body = 4;
optional string context = 5;
}

View File

@ -0,0 +1,27 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message HeadFileDownload {
optional bytes file_id = 1;
optional bytes playback_id = 2;
optional string cdn_uri_scheme = 3;
optional string cdn_domain = 4;
optional int64 head_file_size = 5;
optional int64 bytes_downloaded = 6;
optional int64 bytes_wasted = 7;
optional int64 http_latency = 8;
optional int64 http_64k_latency = 9;
optional int64 total_time = 10;
optional int64 http_result = 11;
optional int64 error_code = 12;
optional int64 cached_bytes = 13;
optional int64 bytes_from_cache = 14;
optional string socket_reuse = 15;
optional string request_type = 16;
optional string initial_disk_state = 17;
}

View File

@ -0,0 +1,62 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LegacyEndSong {
optional int64 sequence_number = 1;
optional string sequence_id = 2;
optional bytes playback_id = 3;
optional bytes parent_playback_id = 4;
optional string source_start = 5;
optional string reason_start = 6;
optional string source_end = 7;
optional string reason_end = 8;
optional int64 bytes_played = 9;
optional int64 bytes_in_song = 10;
optional int64 ms_played = 11;
optional int64 ms_nominal_played = 12;
optional int64 ms_total_est = 13;
optional int64 ms_rcv_latency = 14;
optional int64 ms_overlapping = 15;
optional int64 n_seekback = 16;
optional int64 ms_seekback = 17;
optional int64 n_seekfwd = 18;
optional int64 ms_seekfwd = 19;
optional int64 ms_latency = 20;
optional int64 ui_latency = 21;
optional string player_id = 22;
optional int64 ms_key_latency = 23;
optional bool offline_key = 24;
optional bool cached_key = 25;
optional int64 n_stutter = 26;
optional int64 p_lowbuffer = 27;
optional bool shuffle = 28;
optional int64 max_continous = 29;
optional int64 union_played = 30;
optional int64 artificial_delay = 31;
optional int64 bitrate = 32;
optional string play_context = 33;
optional string audiocodec = 34;
optional string play_track = 35;
optional string display_track = 36;
optional bool offline = 37;
optional int64 offline_timestamp = 38;
optional bool incognito_mode = 39;
optional string provider = 40;
optional string referer = 41;
optional string referrer_version = 42;
optional string referrer_vendor = 43;
optional string transition = 44;
optional string streaming_rule = 45;
optional string gaia_dev_id = 46;
optional string accepted_tc = 47;
optional string promotion_type = 48;
optional string page_instance_id = 49;
optional string interaction_id = 50;
optional string parent_play_track = 51;
optional int64 core_version = 52;
}

View File

@ -0,0 +1,11 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LocalFileSyncError {
optional string error = 1;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LocalFilesError {
optional int64 error_code = 1;
optional string context = 2;
optional string info = 3;
}

View File

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LocalFilesImport {
optional int64 tracks = 1;
optional int64 duplicate_tracks = 2;
optional int64 failed_tracks = 3;
optional int64 matched_tracks = 4;
optional string source = 5;
optional int64 invalid_tracks = 6;
}

View File

@ -0,0 +1,20 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LocalFilesReport {
optional int64 total_tracks = 1;
optional int64 total_size = 2;
optional int64 owned_tracks = 3;
optional int64 owned_size = 4;
optional int64 tracks_not_found = 5;
optional int64 tracks_bad_format = 6;
optional int64 tracks_drm_protected = 7;
optional int64 tracks_unknown_pruned = 8;
optional int64 tracks_reallocated_repaired = 9;
optional int64 enabled_sources = 10;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message LocalFilesSourceReport {
optional string id = 1;
optional int64 tracks = 2;
}

View File

@ -0,0 +1,16 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message MdnsLoginFailures {
optional string device_id = 1;
optional int64 error_code = 2;
optional string response_body = 3;
optional string request = 4;
optional int64 esdk_internal_error_code = 5;
optional string context = 6;
}

View File

@ -0,0 +1,20 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message MetadataExtensionClientStatistic {
optional bytes task_id = 1;
optional string feature_id = 2;
optional bool is_online_param = 3;
optional int32 num_extensions_with_etags = 4;
optional int32 num_extensions_requested = 5;
optional int32 num_extensions_needed = 6;
optional int32 num_uris_requested = 7;
optional int32 num_uris_needed = 8;
optional int32 num_prepared_requests = 9;
optional int32 num_sent_requests = 10;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message Offline2ClientError {
optional string error = 1;
optional string device_id = 2;
optional string cache_id = 3;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message Offline2ClientEvent {
optional string event = 1;
optional string device_id = 2;
optional string cache_id = 3;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message OfflineError {
optional int64 error_code = 1;
optional string track = 2;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message OfflineEvent {
optional string event = 1;
optional string data = 2;
}

View File

@ -0,0 +1,26 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message OfflineReport {
optional int64 total_num_tracks = 1;
optional int64 num_downloaded_tracks = 2;
optional int64 num_downloaded_tracks_keyless = 3;
optional int64 total_num_links = 4;
optional int64 total_num_links_keyless = 5;
map<string, int64> context_num_links_map = 6;
map<string, int64> linktype_num_tracks_map = 7;
optional int64 track_limit = 8;
optional int64 expiry = 9;
optional string change_reason = 10;
optional int64 offline_keys = 11;
optional int64 cached_keys = 12;
optional int64 total_num_episodes = 13;
optional int64 num_downloaded_episodes = 14;
optional int64 episode_limit = 15;
optional int64 episode_expiry = 16;
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PlaybackError {
optional bytes file_id = 1;
optional bytes playback_id = 2;
optional string track_id = 3;
optional int64 bitrate = 4;
optional int64 error_code = 5;
optional bool fatal = 6;
optional string audiocodec = 7;
optional bool external_track = 8;
optional int64 position_ms = 9;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PlaybackRetry {
optional string track = 1;
optional bytes playback_id = 2;
optional string method = 3;
optional string status = 4;
optional string reason = 5;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PlaybackSegments {
optional bytes playback_id = 1;
optional string track_uri = 2;
optional bool overflow = 3;
optional string segments = 4;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PlayerStateRestore {
optional string error = 1;
optional int64 size = 2;
optional string context_uri = 3;
optional string state = 4;
}

View File

@ -0,0 +1,15 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PlaylistSyncEvent {
optional string playlist_id = 1;
optional bool is_playlist = 2;
optional int64 timestamp_ms = 3;
optional int32 error_code = 4;
optional string event_description = 5;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PodcastAdSegmentReceived {
optional string episode_uri = 1;
optional string playback_id = 2;
optional string slots = 3;
optional bool is_audio = 4;
}

View File

@ -0,0 +1,17 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message Prefetch {
optional int64 strategies = 1;
optional int64 strategy = 2;
optional bytes file_id = 3;
optional string track = 4;
optional int64 prefetch_index = 5;
optional int64 current_window_size = 6;
optional int64 max_window_size = 7;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PrefetchError {
optional int64 strategy = 1;
optional string description = 2;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ProductStateUcsVerification {
map<string, string> additional_entries = 1;
map<string, string> missing_entries = 2;
optional string fetch_type = 3;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message PubSubCountPerIdent {
optional string ident_filter = 1;
optional int32 no_of_messages_received = 2;
optional int32 no_of_failed_conversions = 3;
}

View File

@ -0,0 +1,52 @@
// Extracted from: Spotify 1.1.73.517 (macOS)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message RawCoreStream {
optional bytes playback_id = 1;
optional bytes parent_playback_id = 2;
optional string video_session_id = 3;
optional bytes media_id = 4;
optional string media_type = 5;
optional string feature_identifier = 6;
optional string feature_version = 7;
optional string view_uri = 8;
optional string source_start = 9;
optional string reason_start = 10;
optional string source_end = 11;
optional string reason_end = 12;
optional int64 playback_start_time = 13;
optional int32 ms_played = 14;
optional int32 ms_played_nominal = 15;
optional int32 ms_played_overlapping = 16;
optional int32 ms_played_video = 17;
optional int32 ms_played_background = 18;
optional int32 ms_played_fullscreen = 19;
optional bool live = 20;
optional bool shuffle = 21;
optional string audio_format = 22;
optional string play_context = 23;
optional string content_uri = 24;
optional string displayed_content_uri = 25;
optional bool content_is_downloaded = 26;
optional bool incognito_mode = 27;
optional string provider = 28;
optional string referrer = 29;
optional string referrer_version = 30;
optional string referrer_vendor = 31;
optional string streaming_rule = 32;
optional string connect_controller_device_id = 33;
optional string page_instance_id = 34;
optional string interaction_id = 35;
optional string parent_content_uri = 36;
optional int64 core_version = 37;
optional string core_bundle = 38;
optional bool is_assumed_premium = 39;
optional int32 ms_played_external = 40;
optional string local_content_uri = 41;
optional bool client_offline_at_stream_start = 42;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message ReachabilityChanged {
optional string type = 1;
optional string info = 2;
}

View File

@ -0,0 +1,12 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message RejectedClientEventNonAuth {
optional string reject_reason = 1;
optional string event_name = 2;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message RemainingSkips {
optional string interaction_id = 1;
optional int32 remaining_skips_before_skip = 2;
optional int32 remaining_skips_after_skip = 3;
repeated string interaction_ids = 4;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message RequestAccounting {
optional string request = 1;
optional int64 downloaded = 2;
optional int64 uploaded = 3;
optional int64 num_requests = 4;
optional string connection = 5;
optional string source_identifier = 6;
optional string reason = 7;
optional int64 duration_ms = 8;
}

View File

@ -0,0 +1,22 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message RequestTime {
optional string type = 1;
optional int64 first_byte = 2;
optional int64 last_byte = 3;
optional int64 size = 4;
optional int64 size_sent = 5;
optional bool error = 6;
optional string url = 7;
optional string verb = 8;
optional int64 payload_size_sent = 9;
optional int32 connection_reuse = 10;
optional double sampling_probability = 11;
optional bool cached = 12;
}

View File

@ -0,0 +1,13 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message StartTrack {
optional bytes playback_id = 1;
optional string context_player_session_id = 2;
optional int64 timestamp = 3;
}

View File

@ -0,0 +1,19 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message Stutter {
optional bytes file_id = 1;
optional bytes playback_id = 2;
optional string track = 3;
optional int64 buffer_size = 4;
optional int64 max_buffer_size = 5;
optional int64 file_byte_offset = 6;
optional int64 file_byte_total = 7;
optional int64 target_buffer = 8;
optional string audio_driver = 9;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message TierFeatureFlags {
optional bool ads = 1;
optional bool high_quality = 2;
optional bool offline = 3;
optional bool on_demand = 4;
optional string max_album_plays_consecutive = 5;
optional string max_album_plays_per_hour = 6;
optional string max_skips_per_hour = 7;
optional string max_track_plays_per_hour = 8;
}

View File

@ -0,0 +1,24 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message TrackNotPlayed {
optional bytes playback_id = 1;
optional string source_start = 2;
optional string reason_start = 3;
optional string source_end = 4;
optional string reason_end = 5;
optional string play_context = 6;
optional string play_track = 7;
optional string display_track = 8;
optional string provider = 9;
optional string referer = 10;
optional string referrer_version = 11;
optional string referrer_vendor = 12;
optional string gaia_dev_id = 13;
optional string reason_not_played = 14;
}

View File

@ -0,0 +1,18 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message TrackStuck {
optional string track = 1;
optional bytes playback_id = 2;
optional string source_start = 3;
optional string reason_start = 4;
optional bool offline = 5;
optional int64 position = 6;
optional int64 count = 7;
optional string audio_driver = 8;
}

View File

@ -0,0 +1,14 @@
// Extracted from: Spotify 1.1.61.583 (Windows)
syntax = "proto2";
package spotify.event_sender.proto;
option optimize_for = CODE_SIZE;
message WindowSize {
optional int64 width = 1;
optional int64 height = 2;
optional int64 mode = 3;
optional int64 duration = 4;
}

108
lib/spot/proto/apiv1.proto Normal file
View File

@ -0,0 +1,108 @@
// No longer present in Spotify 1.1.73.517 (macOS)
syntax = "proto3";
package spotify.offline.proto;
import "google/protobuf/timestamp.proto";
import "offline.proto";
option optimize_for = CODE_SIZE;
message ListDevicesRequest {
string user_id = 1;
}
message ListDevicesResponse {
repeated Device devices = 1;
}
message PutDeviceRequest {
string user_id = 1;
Body body = 2;
message Body {
Device device = 1;
}
}
message BasicDeviceRequest {
DeviceKey key = 1;
}
message GetDeviceResponse {
Device device = 1;
}
message RemoveDeviceRequest {
DeviceKey key = 1;
bool is_force_remove = 2;
}
message OfflineEnableDeviceResponse {
Restrictions restrictions = 1;
}
message ListResourcesResponse {
repeated Resource resources = 1;
google.protobuf.Timestamp server_time = 2;
}
message WriteResourcesRequest {
DeviceKey key = 1;
Body body = 2;
message Body {
repeated ResourceOperation operations = 1;
string source_device_id = 2;
string source_cache_id = 3;
}
}
message ResourcesUpdate {
string source_device_id = 1;
string source_cache_id = 2;
}
message DeltaResourcesRequest {
DeviceKey key = 1;
Body body = 2;
message Body {
google.protobuf.Timestamp last_known_server_time = 1;
}
}
message DeltaResourcesResponse {
bool delta_update_possible = 1;
repeated ResourceOperation operations = 2;
google.protobuf.Timestamp server_time = 3;
}
message GetResourceRequest {
DeviceKey key = 1;
string uri = 2;
}
message GetResourceResponse {
Resource resource = 1;
}
message WriteResourcesDetailsRequest {
DeviceKey key = 1;
Body body = 2;
message Body {
repeated Resource resources = 1;
}
}
message GetResourceForDevicesRequest {
string user_id = 1;
string uri = 2;
}
message GetResourceForDevicesResponse {
repeated Device devices = 1;
repeated ResourceForDevice resources = 2;
}

Some files were not shown because too many files have changed in this diff Show More