diff --git a/protobuf/events.proto b/protobuf/events.proto index 491e0fe..dba7412 100644 --- a/protobuf/events.proto +++ b/protobuf/events.proto @@ -43,13 +43,13 @@ message PrivateEventFeedListProto { message PlayerJoinedEvent { required uint64 ev_sg_id = 1; - required uint64 player_id = 2; + optional uint64 player_id = 2; optional uint64 pje_f3 = 3; } message PlayerLeftEvent { //didn't decompiled yet, just a guess required uint64 ev_sg_id = 1; - required uint64 player_id = 2; + optional uint64 player_id = 2; optional uint64 ple_f3 = 3; } @@ -185,7 +185,7 @@ message Event { //real name: EventProtobuf; where is shortName, shortDescription optional EventType eventType = 24; optional uint64 e_f25 = 25; optional string e_f26 = 26; - optional uint64 e_f27 = 27; //<=4, ENUM? + optional uint64 e_f27 = 27; //<=4, ENUM? saw = 2 optional bool overrideMapPreferences = 28; optional bool invisibleToNonParticipants = 29; optional EventSeriesProtobuf evSeries = 30; diff --git a/protobuf/events_pb2.py b/protobuf/events_pb2.py index c881b16..4719986 100644 --- a/protobuf/events_pb2.py +++ b/protobuf/events_pb2.py @@ -16,7 +16,7 @@ _sym_db = _symbol_database.Default() import profile_pb2 as profile__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x65vents.proto\x1a\rprofile.proto\"H\n\x11PlayerJoinedEvent\x12\x10\n\x08\x65v_sg_id\x18\x01 \x02(\x04\x12\x11\n\tplayer_id\x18\x02 \x02(\x04\x12\x0e\n\x06pje_f3\x18\x03 \x01(\x04\"F\n\x0fPlayerLeftEvent\x12\x10\n\x08\x65v_sg_id\x18\x01 \x02(\x04\x12\x11\n\tplayer_id\x18\x02 \x02(\x04\x12\x0e\n\x06ple_f3\x18\x03 \x01(\x04\"\xd3\x07\n\x15\x45ventSubgroupProtobuf\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0e\n\x06\x65vs_f4\x18\x04 \x01(\r\x12\x0e\n\x06\x65vs_f5\x18\x05 \x01(\r\x12\x0e\n\x06\x65vs_f6\x18\x06 \x01(\r\x12\r\n\x05scode\x18\x07 \x01(\t\x12\x10\n\x08rules_id\x18\x08 \x01(\x04\x12\x19\n\x11registrationStart\x18\t \x01(\x04\x12\x1b\n\x13registrationStartWT\x18\n \x01(\x04\x12\x17\n\x0fregistrationEnd\x18\x0b \x01(\x04\x12\x19\n\x11registrationEndWT\x18\x0c \x01(\x04\x12\x13\n\x0blineUpStart\x18\r \x01(\x04\x12\x15\n\rlineUpStartWT\x18\x0e \x01(\x04\x12\x11\n\tlineUpEnd\x18\x0f \x01(\x04\x12\x13\n\x0blineUpEndWT\x18\x10 \x01(\x04\x12\x1a\n\x12\x65ventSubgroupStart\x18\x11 \x01(\x04\x12\x1c\n\x14\x65ventSubgroupStartWT\x18\x12 \x01(\x04\x12\x0f\n\x07\x65vs_f19\x18\x13 \x01(\x04\x12\x0f\n\x07\x65vs_f20\x18\x14 \x01(\x04\x12\x0f\n\x07\x65vs_f21\x18\x15 \x01(\x08\x12\x10\n\x08route_id\x18\x16 \x02(\x04\x12\x16\n\x0einvitedLeaders\x18\x17 \x03(\x04\x12\x18\n\x10\x64istanceInMeters\x18\x18 \x01(\x02\x12\x0c\n\x04laps\x18\x19 \x01(\r\x12\x15\n\rstartLocation\x18\x1d \x01(\x04\x12\r\n\x05label\x18\x1e \x01(\r\x12\x10\n\x08paceType\x18\x1f \x01(\r\x12\x15\n\rfromPaceValue\x18 \x01(\x02\x12\x13\n\x0btoPaceValue\x18! \x01(\x02\x12\x19\n\x11\x64urationInSeconds\x18\" \x01(\r\x12\x0f\n\x07\x65vs_f35\x18# \x01(\r\x12\x12\n\njerseyHash\x18$ \x01(\x04\x12\x0f\n\x07\x65vs_f37\x18% \x01(\x08\x12\x0f\n\x07\x65vs_f38\x18& \x01(\r\x12\x14\n\x0c\x61uxiliaryUrl\x18\' \x01(\t\x12\x10\n\x08\x62ikeHash\x18( \x01(\x04\x12\x17\n\x0finvitedSweepers\x18) \x03(\x04\x12\x0f\n\x07\x65vs_f42\x18* \x01(\x04\x12\x11\n\tcustomUrl\x18+ \x01(\t\x12\x0f\n\x07\x65vs_f44\x18, \x01(\x08\x12\x0c\n\x04tags\x18- \x01(\t\x12\x19\n\x11lateJoinInMinutes\x18. \x01(\r\x12\x11\n\tcourse_id\x18/ \x01(\x04\x12\x0f\n\x07\x65vs_f48\x18\x30 \x01(\x04\x12\x10\n\x08routeUrl\x18\x31 \x01(\t\x12\x0f\n\x07\x65vs_f50\x18\x32 \x03(\x05\x12\x0f\n\x07\x65vs_f51\x18\x33 \x01(\x08\"g\n\x15MicroserviceEventData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1a\n\x12\x65xternalResourceId\x18\x02 \x01(\x0c\x12$\n\nvisibility\x18\x03 \x01(\x0e\x32\x10.EventVisibility\"D\n\x13\x45ventSeriesProtobuf\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x7f\n\x15\x45ventTimeTrialOptions\x12\x1c\n\x14timeGapBetweenRowsMs\x18\x01 \x01(\r\x12\x0f\n\x07maxRows\x18\x02 \x01(\r\x12\x17\n\x0fmaxRidersPerRow\x18\x03 \x01(\r\x12\x0e\n\x06\x65vt_f4\x18\x04 \x01(\r\x12\x0e\n\x06\x65vt_f5\x18\x05 \x01(\x04\"\xcf\x06\n\x05\x45vent\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x14\n\x0cserver_realm\x18\x02 \x01(\x04\x12\x0c\n\x04name\x18\x03 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\neventStart\x18\x05 \x01(\x04\x12\x0c\n\x04\x65_f6\x18\x06 \x01(\t\x12\x18\n\x10\x64istanceInMeters\x18\x07 \x01(\x02\x12\x0c\n\x04laps\x18\x08 \x01(\r\x12\x0c\n\x04\x65_f9\x18\t \x01(\r\x12(\n\x08\x63\x61tegory\x18\n \x03(\x0b\x32\x16.EventSubgroupProtobuf\x12\r\n\x05\x65_f11\x18\x0b \x01(\t\x12\x10\n\x08imageUrl\x18\x0c \x01(\t\x12\x19\n\x11\x64urationInSeconds\x18\r \x01(\r\x12\x10\n\x08route_id\x18\x0e \x01(\x04\x12\x10\n\x08rules_id\x18\x0f \x01(\x04\x12\r\n\x05\x65_f16\x18\x10 \x01(\r\x12\x0f\n\x07visible\x18\x11 \x01(\x08\x12\x12\n\njerseyHash\x18\x12 \x01(\x04\x12\r\n\x05\x65_f19\x18\x13 \x01(\t\x12\r\n\x05\x65_f20\x18\x14 \x01(\t\x12\r\n\x05\x65_f21\x18\x15 \x01(\t\x12\x15\n\x05sport\x18\x16 \x01(\x0e\x32\x06.Sport\x12\r\n\x05\x65_f23\x18\x17 \x01(\x04\x12\x1d\n\teventType\x18\x18 \x01(\x0e\x32\n.EventType\x12\r\n\x05\x65_f25\x18\x19 \x01(\x04\x12\r\n\x05\x65_f26\x18\x1a \x01(\t\x12\r\n\x05\x65_f27\x18\x1b \x01(\x04\x12\x1e\n\x16overrideMapPreferences\x18\x1c \x01(\x08\x12\"\n\x1ainvisibleToNonParticipants\x18\x1d \x01(\x08\x12&\n\x08\x65vSeries\x18\x1e \x01(\x0b\x32\x14.EventSeriesProtobuf\x12\x0c\n\x04tags\x18\x1f \x01(\t\x12\r\n\x05\x65_f32\x18 \x01(\x04\x12\x0e\n\x06\x65_wtrl\x18! \x01(\x08\x12\x19\n\x11lateJoinInMinutes\x18\" \x01(\r\x12\x11\n\tcourse_id\x18# \x01(\x04\x12#\n\x03tto\x18$ \x01(\x0b\x32\x16.EventTimeTrialOptions\x12\r\n\x05\x65_f37\x18% \x01(\t\x12\r\n\x05\x65_f38\x18& \x01(\t\x12\r\n\x05\x65_f39\x18\' \x01(\r\x12$\n\x04msed\x18( \x01(\x0b\x32\x16.MicroserviceEventData\x12\r\n\x05\x65_f41\x18) \x03(\r\" \n\x06\x45vents\x12\x16\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x06.Event*V\n\x0f\x45ventVisibility\x12\x0b\n\x07\x45V_NULL\x10\x00\x12\x10\n\x0c\x45V_PUB_SHARE\x10\x01\x12\x12\n\x0e\x45V_BY_RESOURCE\x10\x02\x12\x10\n\x0c\x45V_SHAREABLE\x10\x03*\xa5\x01\n\x0b\x45ventTypeV2\x12\x16\n\x12\x45VENT_TYPE_UNKNOWN\x10\x00\x12\x15\n\x11\x45VENT_TYPE_EFONDO\x10\x01\x12\x13\n\x0f\x45VENT_TYPE_RACE\x10\x02\x12\x19\n\x15\x45VENT_TYPE_GROUP_RIDE\x10\x03\x12\x1c\n\x18\x45VENT_TYPE_GROUP_WORKOUT\x10\x04\x12\x19\n\x15\x45VENT_TYPE_TIME_TRIAL\x10\x05*d\n\tEventType\x12\x0e\n\nET_UNKNOWN\x10\x00\x12\n\n\x06\x45\x46ONDO\x10\x01\x12\x08\n\x04RACE\x10\x02\x12\x0e\n\nGROUP_RIDE\x10\x03\x12\x11\n\rGROUP_WORKOUT\x10\x04\x12\x0e\n\nTIME_TRIAL\x10\x05*o\n\x0c\x45ventCulling\x12\x15\n\x11\x43ULLING_UNDEFINED\x10\x00\x12\x15\n\x11\x43ULLING_EVERYBODY\x10\x01\x12\x16\n\x12\x43ULLING_EVENT_ONLY\x10\x02\x12\x19\n\x15\x43ULLING_SUBGROUP_ONLY\x10\x03') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x65vents.proto\x1a\rprofile.proto\"\x97\x01\n\x13InvitedProfileProto\x12\x0e\n\x06ipp_f1\x18\x01 \x02(\x04\x12\x0e\n\x06ipp_f2\x18\x02 \x01(\t\x12\x0e\n\x06ipp_f3\x18\x03 \x01(\t\x12\x0e\n\x06ipp_f4\x18\x04 \x01(\t\x12\x0e\n\x06ipp_f5\x18\x05 \x01(\x08\x12\x0e\n\x06ipp_f6\x18\x06 \x01(\x08\x12 \n\x0bplayer_type\x18\x07 \x01(\x0e\x32\x0b.PlayerType\"L\n\x10\x45ventInviteProto\x12%\n\x07profile\x18\x01 \x02(\x0b\x32\x14.InvitedProfileProto\x12\x11\n\tinvite_f2\x18\x02 \x02(\x04\"\xd8\x02\n\x15PrivateEventFeedProto\x12\x0e\n\x06pef_f1\x18\x01 \x02(\x04\x12\x15\n\x05sport\x18\x02 \x01(\x0e\x32\x06.Sport\x12\x1a\n\x12\x65ventSubgroupStart\x18\x03 \x01(\x04\x12\x10\n\x08route_id\x18\x04 \x01(\x04\x12\x0e\n\x06pef_f5\x18\x05 \x01(\r\x12\x0e\n\x06pef_f6\x18\x06 \x01(\x02\x12\x0e\n\x06pef_f7\x18\x07 \x01(\x04\x12\x0e\n\x06pef_f8\x18\x08 \x01(\r\x12\x0e\n\x06pef_f9\x18\t \x01(\r\x12\x0f\n\x07pef_f10\x18\n \x01(\r\x12\x0f\n\x07pef_f11\x18\x0b \x01(\t\x12\x0f\n\x07pef_f12\x18\x0c \x01(\x04\x12\x0f\n\x07pef_f13\x18\r \x01(\t\x12\x0f\n\x07pef_f14\x18\x0e \x01(\t\x12\x0f\n\x07pef_f15\x18\x0f \x01(\x04\x12\x12\n\nsubgroupId\x18\x10 \x01(\x04\x12\x0f\n\x07pef_f17\x18\x11 \x01(\r\x12\x0f\n\x07pef_f18\x18\x12 \x01(\x08\"@\n\x19PrivateEventFeedListProto\x12#\n\x03pef\x18\x01 \x03(\x0b\x32\x16.PrivateEventFeedProto\"H\n\x11PlayerJoinedEvent\x12\x10\n\x08\x65v_sg_id\x18\x01 \x02(\x04\x12\x11\n\tplayer_id\x18\x02 \x01(\x04\x12\x0e\n\x06pje_f3\x18\x03 \x01(\x04\"F\n\x0fPlayerLeftEvent\x12\x10\n\x08\x65v_sg_id\x18\x01 \x02(\x04\x12\x11\n\tplayer_id\x18\x02 \x01(\x04\x12\x0e\n\x06ple_f3\x18\x03 \x01(\x04\"\xd3\x07\n\x15\x45ventSubgroupProtobuf\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0e\n\x06\x65vs_f4\x18\x04 \x01(\r\x12\x0e\n\x06\x65vs_f5\x18\x05 \x01(\r\x12\x0e\n\x06\x65vs_f6\x18\x06 \x01(\r\x12\r\n\x05scode\x18\x07 \x01(\t\x12\x10\n\x08rules_id\x18\x08 \x01(\x04\x12\x19\n\x11registrationStart\x18\t \x01(\x04\x12\x1b\n\x13registrationStartWT\x18\n \x01(\x04\x12\x17\n\x0fregistrationEnd\x18\x0b \x01(\x04\x12\x19\n\x11registrationEndWT\x18\x0c \x01(\x04\x12\x13\n\x0blineUpStart\x18\r \x01(\x04\x12\x15\n\rlineUpStartWT\x18\x0e \x01(\x04\x12\x11\n\tlineUpEnd\x18\x0f \x01(\x04\x12\x13\n\x0blineUpEndWT\x18\x10 \x01(\x04\x12\x1a\n\x12\x65ventSubgroupStart\x18\x11 \x01(\x04\x12\x1c\n\x14\x65ventSubgroupStartWT\x18\x12 \x01(\x04\x12\x0f\n\x07\x65vs_f19\x18\x13 \x01(\x04\x12\x0f\n\x07\x65vs_f20\x18\x14 \x01(\x04\x12\x0f\n\x07\x65vs_f21\x18\x15 \x01(\x08\x12\x10\n\x08route_id\x18\x16 \x02(\x04\x12\x16\n\x0einvitedLeaders\x18\x17 \x03(\x04\x12\x18\n\x10\x64istanceInMeters\x18\x18 \x01(\x02\x12\x0c\n\x04laps\x18\x19 \x01(\r\x12\x15\n\rstartLocation\x18\x1d \x01(\x04\x12\r\n\x05label\x18\x1e \x01(\r\x12\x10\n\x08paceType\x18\x1f \x01(\r\x12\x15\n\rfromPaceValue\x18 \x01(\x02\x12\x13\n\x0btoPaceValue\x18! \x01(\x02\x12\x19\n\x11\x64urationInSeconds\x18\" \x01(\r\x12\x0f\n\x07\x65vs_f35\x18# \x01(\r\x12\x12\n\njerseyHash\x18$ \x01(\x04\x12\x0f\n\x07\x65vs_f37\x18% \x01(\x08\x12\x0f\n\x07\x65vs_f38\x18& \x01(\r\x12\x14\n\x0c\x61uxiliaryUrl\x18\' \x01(\t\x12\x10\n\x08\x62ikeHash\x18( \x01(\x04\x12\x17\n\x0finvitedSweepers\x18) \x03(\x04\x12\x0f\n\x07\x65vs_f42\x18* \x01(\x04\x12\x11\n\tcustomUrl\x18+ \x01(\t\x12\x0f\n\x07\x65vs_f44\x18, \x01(\x08\x12\x0c\n\x04tags\x18- \x01(\t\x12\x19\n\x11lateJoinInMinutes\x18. \x01(\r\x12\x11\n\tcourse_id\x18/ \x01(\x04\x12\x0f\n\x07\x65vs_f48\x18\x30 \x01(\x04\x12\x10\n\x08routeUrl\x18\x31 \x01(\t\x12\x0f\n\x07\x65vs_f50\x18\x32 \x03(\x05\x12\x0f\n\x07\x65vs_f51\x18\x33 \x01(\x08\"g\n\x15MicroserviceEventData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1a\n\x12\x65xternalResourceId\x18\x02 \x01(\x0c\x12$\n\nvisibility\x18\x03 \x01(\x0e\x32\x10.EventVisibility\"D\n\x13\x45ventSeriesProtobuf\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x7f\n\x15\x45ventTimeTrialOptions\x12\x1c\n\x14timeGapBetweenRowsMs\x18\x01 \x01(\r\x12\x0f\n\x07maxRows\x18\x02 \x01(\r\x12\x17\n\x0fmaxRidersPerRow\x18\x03 \x01(\r\x12\x0e\n\x06\x65vt_f4\x18\x04 \x01(\r\x12\x0e\n\x06\x65vt_f5\x18\x05 \x01(\x04\"\xcf\x06\n\x05\x45vent\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x14\n\x0cserver_realm\x18\x02 \x01(\x04\x12\x0c\n\x04name\x18\x03 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\neventStart\x18\x05 \x01(\x04\x12\x0c\n\x04\x65_f6\x18\x06 \x01(\t\x12\x18\n\x10\x64istanceInMeters\x18\x07 \x01(\x02\x12\x0c\n\x04laps\x18\x08 \x01(\r\x12\x0c\n\x04\x65_f9\x18\t \x01(\r\x12(\n\x08\x63\x61tegory\x18\n \x03(\x0b\x32\x16.EventSubgroupProtobuf\x12\r\n\x05\x65_f11\x18\x0b \x01(\t\x12\x10\n\x08imageUrl\x18\x0c \x01(\t\x12\x19\n\x11\x64urationInSeconds\x18\r \x01(\r\x12\x10\n\x08route_id\x18\x0e \x01(\x04\x12\x10\n\x08rules_id\x18\x0f \x01(\x04\x12\r\n\x05\x65_f16\x18\x10 \x01(\r\x12\x0f\n\x07visible\x18\x11 \x01(\x08\x12\x12\n\njerseyHash\x18\x12 \x01(\x04\x12\r\n\x05\x65_f19\x18\x13 \x01(\t\x12\r\n\x05\x65_f20\x18\x14 \x01(\t\x12\r\n\x05\x65_f21\x18\x15 \x01(\t\x12\x15\n\x05sport\x18\x16 \x01(\x0e\x32\x06.Sport\x12\r\n\x05\x65_f23\x18\x17 \x01(\x04\x12\x1d\n\teventType\x18\x18 \x01(\x0e\x32\n.EventType\x12\r\n\x05\x65_f25\x18\x19 \x01(\x04\x12\r\n\x05\x65_f26\x18\x1a \x01(\t\x12\r\n\x05\x65_f27\x18\x1b \x01(\x04\x12\x1e\n\x16overrideMapPreferences\x18\x1c \x01(\x08\x12\"\n\x1ainvisibleToNonParticipants\x18\x1d \x01(\x08\x12&\n\x08\x65vSeries\x18\x1e \x01(\x0b\x32\x14.EventSeriesProtobuf\x12\x0c\n\x04tags\x18\x1f \x01(\t\x12\r\n\x05\x65_f32\x18 \x01(\x04\x12\x0e\n\x06\x65_wtrl\x18! \x01(\x08\x12\x19\n\x11lateJoinInMinutes\x18\" \x01(\r\x12\x11\n\tcourse_id\x18# \x01(\x04\x12#\n\x03tto\x18$ \x01(\x0b\x32\x16.EventTimeTrialOptions\x12\r\n\x05\x65_f37\x18% \x01(\t\x12\r\n\x05\x65_f38\x18& \x01(\t\x12\r\n\x05\x65_f39\x18\' \x01(\r\x12$\n\x04msed\x18( \x01(\x0b\x32\x16.MicroserviceEventData\x12\r\n\x05\x65_f41\x18) \x03(\r\" \n\x06\x45vents\x12\x16\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x06.Event*V\n\x0f\x45ventVisibility\x12\x0b\n\x07\x45V_NULL\x10\x00\x12\x10\n\x0c\x45V_PUB_SHARE\x10\x01\x12\x12\n\x0e\x45V_BY_RESOURCE\x10\x02\x12\x10\n\x0c\x45V_SHAREABLE\x10\x03*\xa5\x01\n\x0b\x45ventTypeV2\x12\x16\n\x12\x45VENT_TYPE_UNKNOWN\x10\x00\x12\x15\n\x11\x45VENT_TYPE_EFONDO\x10\x01\x12\x13\n\x0f\x45VENT_TYPE_RACE\x10\x02\x12\x19\n\x15\x45VENT_TYPE_GROUP_RIDE\x10\x03\x12\x1c\n\x18\x45VENT_TYPE_GROUP_WORKOUT\x10\x04\x12\x19\n\x15\x45VENT_TYPE_TIME_TRIAL\x10\x05*d\n\tEventType\x12\x0e\n\nET_UNKNOWN\x10\x00\x12\n\n\x06\x45\x46ONDO\x10\x01\x12\x08\n\x04RACE\x10\x02\x12\x0e\n\nGROUP_RIDE\x10\x03\x12\x11\n\rGROUP_WORKOUT\x10\x04\x12\x0e\n\nTIME_TRIAL\x10\x05*o\n\x0c\x45ventCulling\x12\x15\n\x11\x43ULLING_UNDEFINED\x10\x00\x12\x15\n\x11\x43ULLING_EVERYBODY\x10\x01\x12\x16\n\x12\x43ULLING_EVENT_ONLY\x10\x02\x12\x19\n\x15\x43ULLING_SUBGROUP_ONLY\x10\x03') _EVENTVISIBILITY = DESCRIPTOR.enum_types_by_name['EventVisibility'] EventVisibility = enum_type_wrapper.EnumTypeWrapper(_EVENTVISIBILITY) @@ -48,6 +48,10 @@ CULLING_EVENT_ONLY = 2 CULLING_SUBGROUP_ONLY = 3 +_INVITEDPROFILEPROTO = DESCRIPTOR.message_types_by_name['InvitedProfileProto'] +_EVENTINVITEPROTO = DESCRIPTOR.message_types_by_name['EventInviteProto'] +_PRIVATEEVENTFEEDPROTO = DESCRIPTOR.message_types_by_name['PrivateEventFeedProto'] +_PRIVATEEVENTFEEDLISTPROTO = DESCRIPTOR.message_types_by_name['PrivateEventFeedListProto'] _PLAYERJOINEDEVENT = DESCRIPTOR.message_types_by_name['PlayerJoinedEvent'] _PLAYERLEFTEVENT = DESCRIPTOR.message_types_by_name['PlayerLeftEvent'] _EVENTSUBGROUPPROTOBUF = DESCRIPTOR.message_types_by_name['EventSubgroupProtobuf'] @@ -56,6 +60,34 @@ _EVENTSERIESPROTOBUF = DESCRIPTOR.message_types_by_name['EventSeriesProtobuf'] _EVENTTIMETRIALOPTIONS = DESCRIPTOR.message_types_by_name['EventTimeTrialOptions'] _EVENT = DESCRIPTOR.message_types_by_name['Event'] _EVENTS = DESCRIPTOR.message_types_by_name['Events'] +InvitedProfileProto = _reflection.GeneratedProtocolMessageType('InvitedProfileProto', (_message.Message,), { + 'DESCRIPTOR' : _INVITEDPROFILEPROTO, + '__module__' : 'events_pb2' + # @@protoc_insertion_point(class_scope:InvitedProfileProto) + }) +_sym_db.RegisterMessage(InvitedProfileProto) + +EventInviteProto = _reflection.GeneratedProtocolMessageType('EventInviteProto', (_message.Message,), { + 'DESCRIPTOR' : _EVENTINVITEPROTO, + '__module__' : 'events_pb2' + # @@protoc_insertion_point(class_scope:EventInviteProto) + }) +_sym_db.RegisterMessage(EventInviteProto) + +PrivateEventFeedProto = _reflection.GeneratedProtocolMessageType('PrivateEventFeedProto', (_message.Message,), { + 'DESCRIPTOR' : _PRIVATEEVENTFEEDPROTO, + '__module__' : 'events_pb2' + # @@protoc_insertion_point(class_scope:PrivateEventFeedProto) + }) +_sym_db.RegisterMessage(PrivateEventFeedProto) + +PrivateEventFeedListProto = _reflection.GeneratedProtocolMessageType('PrivateEventFeedListProto', (_message.Message,), { + 'DESCRIPTOR' : _PRIVATEEVENTFEEDLISTPROTO, + '__module__' : 'events_pb2' + # @@protoc_insertion_point(class_scope:PrivateEventFeedListProto) + }) +_sym_db.RegisterMessage(PrivateEventFeedListProto) + PlayerJoinedEvent = _reflection.GeneratedProtocolMessageType('PlayerJoinedEvent', (_message.Message,), { 'DESCRIPTOR' : _PLAYERJOINEDEVENT, '__module__' : 'events_pb2' @@ -115,28 +147,36 @@ _sym_db.RegisterMessage(Events) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _EVENTVISIBILITY._serialized_start=2347 - _EVENTVISIBILITY._serialized_end=2433 - _EVENTTYPEV2._serialized_start=2436 - _EVENTTYPEV2._serialized_end=2601 - _EVENTTYPE._serialized_start=2603 - _EVENTTYPE._serialized_end=2703 - _EVENTCULLING._serialized_start=2705 - _EVENTCULLING._serialized_end=2816 - _PLAYERJOINEDEVENT._serialized_start=31 - _PLAYERJOINEDEVENT._serialized_end=103 - _PLAYERLEFTEVENT._serialized_start=105 - _PLAYERLEFTEVENT._serialized_end=175 - _EVENTSUBGROUPPROTOBUF._serialized_start=178 - _EVENTSUBGROUPPROTOBUF._serialized_end=1157 - _MICROSERVICEEVENTDATA._serialized_start=1159 - _MICROSERVICEEVENTDATA._serialized_end=1262 - _EVENTSERIESPROTOBUF._serialized_start=1264 - _EVENTSERIESPROTOBUF._serialized_end=1332 - _EVENTTIMETRIALOPTIONS._serialized_start=1334 - _EVENTTIMETRIALOPTIONS._serialized_end=1461 - _EVENT._serialized_start=1464 - _EVENT._serialized_end=2311 - _EVENTS._serialized_start=2313 - _EVENTS._serialized_end=2345 + _EVENTVISIBILITY._serialized_start=2992 + _EVENTVISIBILITY._serialized_end=3078 + _EVENTTYPEV2._serialized_start=3081 + _EVENTTYPEV2._serialized_end=3246 + _EVENTTYPE._serialized_start=3248 + _EVENTTYPE._serialized_end=3348 + _EVENTCULLING._serialized_start=3350 + _EVENTCULLING._serialized_end=3461 + _INVITEDPROFILEPROTO._serialized_start=32 + _INVITEDPROFILEPROTO._serialized_end=183 + _EVENTINVITEPROTO._serialized_start=185 + _EVENTINVITEPROTO._serialized_end=261 + _PRIVATEEVENTFEEDPROTO._serialized_start=264 + _PRIVATEEVENTFEEDPROTO._serialized_end=608 + _PRIVATEEVENTFEEDLISTPROTO._serialized_start=610 + _PRIVATEEVENTFEEDLISTPROTO._serialized_end=674 + _PLAYERJOINEDEVENT._serialized_start=676 + _PLAYERJOINEDEVENT._serialized_end=748 + _PLAYERLEFTEVENT._serialized_start=750 + _PLAYERLEFTEVENT._serialized_end=820 + _EVENTSUBGROUPPROTOBUF._serialized_start=823 + _EVENTSUBGROUPPROTOBUF._serialized_end=1802 + _MICROSERVICEEVENTDATA._serialized_start=1804 + _MICROSERVICEEVENTDATA._serialized_end=1907 + _EVENTSERIESPROTOBUF._serialized_start=1909 + _EVENTSERIESPROTOBUF._serialized_end=1977 + _EVENTTIMETRIALOPTIONS._serialized_start=1979 + _EVENTTIMETRIALOPTIONS._serialized_end=2106 + _EVENT._serialized_start=2109 + _EVENT._serialized_end=2956 + _EVENTS._serialized_start=2958 + _EVENTS._serialized_end=2990 # @@protoc_insertion_point(module_scope) diff --git a/protobuf/segment-result.proto b/protobuf/segment-result.proto index f8f49af..ab92813 100644 --- a/protobuf/segment-result.proto +++ b/protobuf/segment-result.proto @@ -8,7 +8,7 @@ message SegmentResult { optional uint64 f4 = 4; //=CourseID optional uint64 segment_id = 5; optional uint64 event_subgroup_id = 6; - required string first_name = 7; + required string first_name = 7; //only first letter required string last_name = 8; optional uint64 world_time = 9; optional string finish_time_str = 10; @@ -24,7 +24,7 @@ message SegmentResult { optional int64 f20 = 20; //-> enum Sport sport //optional uint64 f21 = 21; //:=activityId (may be -1) //optional bool f22 = 22; - //optional string f23 = 23; + //optional string f23 = 23; //only first letter of first_name } message SegmentResults { diff --git a/protobuf/udp-node-msgs.proto b/protobuf/udp-node-msgs.proto index 3a833d6..cb781f9 100644 --- a/protobuf/udp-node-msgs.proto +++ b/protobuf/udp-node-msgs.proto @@ -36,6 +36,19 @@ enum WA_TYPE { WAT_PPI = 116; //ZNETWORK_INTERNAL_HandlePacePartnerInfo } +enum UserBikeAction { + UBA_ELBOW = 0; + UBA_WAVE = 1; + UBA_02 = 2; //BikeEntity::UpdateAnimation + UBA_RIDEON = 3; + UBA_HAMMER = 4; + UBA_NICE = 5; + UBA_BRING_IT = 6; + UBA_TOAST = 7; + UBA_BELL = 8; + UBA_HOLIDAY_WAVE = 9; //not sure +} + message WorldAttribute { optional int64 wa_f1 = 1; //not r/w by game? 587645624533328784, later 5876456 85771834256 optional int64 server_realm = 2; @@ -51,10 +64,18 @@ message WorldAttribute { optional int64 wa_f12 = 12; //not r/w by game? Not in package when testing optional int32 wa_f13 = 13; //not r/w by game? optional int64 timestamp = 14; //not written by game? (from server) looks like "The Current Epoch Unix Timestamp" in Microseconds - optional int32 wa_f15 = 15; //not r/w by game? 6, might be course + optional int32 wa_f15 = 15; //6, not r/w by game? optional int64 wa_f16 = 16; //not r/w by game? stored as bool } +message PlayerLeftWorld { + required int64 player_id = 1; + optional int64 world_time = 2; // not sure + optional bool anotherLogin = 3; // user profile logged in twice -> one of them should be logged out + optional bool plw_f4 = 4; //true + repeated sint64 plw_f5 = 5; // [1056322864] +} + /*message WorldAttributes { repeated WorldAttribute world_attributes = 1; required int64 world_time = 2; @@ -117,7 +138,7 @@ message PlayerState { optional Sport sport = 31; optional float ps_f32 = 32; optional uint32 ps_f33 = 33; - optional float ps_f34 = 34; //= BikeEntity.field_F00 (=219.56387 and incr if moving) + optional float dist_lat = 34; //= BikeEntity.field_F00 (=219.56387 and incr if moving: actual distance moved included lateral movement) optional int32 world = 35; optional uint32 ps_f36 = 36; // = f(BikeEntity.field_2a28) BikeEntity::CreateNewPacket optional uint32 ps_f37 = 37; // = f(BikeEntity.field_2a28) BikeEntity::CreateNewPacket @@ -195,16 +216,16 @@ message UdpConfigVOD { } message PlayerRouteDistance { - optional int32 bikeId = 1; //BikeManager::FindBikeWithNetworkID - optional float prd_f2 = 2; //or fixed + optional int32 player_id = 1; //BikeManager::FindBikeWithNetworkID + optional float distance_covered = 2; //not sure optional int32 prd_f3 = 3; //-> m_bikeEntity->field_9C8 } message EventSubgroupPlacements { - optional int32 esp_f1 = 1; //-> m_bikeEntity->field_9C0; UdpStatistics::registerFanViewLatestPlayerStateInfo + optional int32 position = 1; //-> m_bikeEntity->field_9C0; UdpStatistics::registerFanViewLatestPlayerStateInfo repeated PlayerRouteDistance player_rd1 = 2; repeated PlayerRouteDistance player_rd2 = 3; - repeated PlayerRouteDistance player_rd3 = 4; + repeated PlayerRouteDistance eventRiderPosition = 4; repeated PlayerRouteDistance player_rd4 = 5; optional int32 eventTotalRiders = 6; optional int32 bikeNetworkId = 7; @@ -230,7 +251,7 @@ message ServerToClient { optional int64 stc_f13 = 13; optional int32 zwifters = 14; optional int32 zc_local_port = 15; - optional IPProtocol zc_protocol = 16; //TODO: enum; 2: TCP + optional IPProtocol zc_protocol = 16; optional int64 stc_f17 = 17; //read in WorldClockService::calculateOneLegLatency optional int32 num_msgs = 18; optional int32 msgnum = 19; diff --git a/protobuf/udp_node_msgs_pb2.py b/protobuf/udp_node_msgs_pb2.py index ef14174..46e9841 100644 --- a/protobuf/udp_node_msgs_pb2.py +++ b/protobuf/udp_node_msgs_pb2.py @@ -17,12 +17,14 @@ import profile_pb2 as profile__pb2 import per_session_info_pb2 as per__session__info__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13udp-node-msgs.proto\x1a\rprofile.proto\x1a\x16per-session-info.proto\"\xb6\x02\n\x0eWorldAttribute\x12\r\n\x05wa_f1\x18\x01 \x01(\x03\x12\x14\n\x0cserver_realm\x18\x02 \x01(\x03\x12\x19\n\x07wa_type\x18\x03 \x01(\x0e\x32\x08.WA_TYPE\x12\x0f\n\x07payload\x18\x04 \x01(\x0c\x12\x17\n\x0fworld_time_born\x18\x05 \x01(\x03\x12\t\n\x01x\x18\x06 \x01(\x03\x12\x12\n\ny_altitude\x18\x07 \x01(\x03\x12\t\n\x01z\x18\x08 \x01(\x03\x12\x19\n\x11world_time_expire\x18\t \x01(\x03\x12\x0e\n\x06rel_id\x18\n \x01(\x03\x12\x12\n\nimportance\x18\x0b \x01(\x05\x12\x0e\n\x06wa_f12\x18\x0c \x01(\x03\x12\x0e\n\x06wa_f13\x18\r \x01(\x05\x12\x11\n\ttimestamp\x18\x0e \x01(\x03\x12\x0e\n\x06wa_f15\x18\x0f \x01(\x05\x12\x0e\n\x06wa_f16\x18\x10 \x01(\x03\"\x91\x05\n\x0bPlayerState\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x11\n\tworldTime\x18\x02 \x01(\x03\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x10\n\x08roadTime\x18\x04 \x01(\x05\x12\x0c\n\x04laps\x18\x05 \x01(\x05\x12\r\n\x05speed\x18\x06 \x01(\r\x12\r\n\x05ps_f7\x18\x07 \x01(\r\x12\x14\n\x0croadPosition\x18\x08 \x01(\x05\x12\x12\n\ncadenceUHz\x18\t \x01(\x05\x12\x0e\n\x06ps_f10\x18\n \x01(\x05\x12\x11\n\theartrate\x18\x0b \x01(\x05\x12\r\n\x05power\x18\x0c \x01(\x05\x12\x0f\n\x07heading\x18\r \x01(\x03\x12\x0c\n\x04lean\x18\x0e \x01(\x03\x12\x10\n\x08\x63limbing\x18\x0f \x01(\x05\x12\x0c\n\x04time\x18\x10 \x01(\x05\x12\x0e\n\x06ps_f17\x18\x11 \x01(\x05\x12\x10\n\x08\x66rameHue\x18\x12 \x01(\r\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\r\x12\x10\n\x08progress\x18\x15 \x01(\r\x12\x17\n\x0f\x63ustomizationId\x18\x16 \x01(\x03\x12\x14\n\x0cjustWatching\x18\x17 \x01(\x08\x12\x10\n\x08\x63\x61lories\x18\x18 \x01(\x05\x12\t\n\x01x\x18\x19 \x01(\x02\x12\x12\n\ny_altitude\x18\x1a \x01(\x02\x12\t\n\x01z\x18\x1b \x01(\x02\x12\x17\n\x0fwatchingRiderId\x18\x1c \x01(\x03\x12\x0f\n\x07groupId\x18\x1d \x01(\x03\x12\x15\n\x05sport\x18\x1f \x01(\x0e\x32\x06.Sport\x12\x0e\n\x06ps_f32\x18 \x01(\x02\x12\x0e\n\x06ps_f33\x18! \x01(\r\x12\x0e\n\x06ps_f34\x18\" \x01(\x02\x12\r\n\x05world\x18# \x01(\x05\x12\x0e\n\x06ps_f36\x18$ \x01(\r\x12\x0e\n\x06ps_f37\x18% \x01(\r\x12\x10\n\x08\x63\x61nSteer\x18& \x01(\x08\x12\r\n\x05route\x18\' \x01(\x05\"\xcd\x02\n\x0e\x43lientToServer\x12\x14\n\x0cserver_realm\x18\x01 \x02(\x03\x12\x11\n\tplayer_id\x18\x02 \x02(\x03\x12\x12\n\nworld_time\x18\x03 \x01(\x03\x12\r\n\x05seqno\x18\x04 \x01(\r\x12\x0e\n\x06\x63ts_f5\x18\x05 \x01(\r\x12\x0e\n\x06\x63ts_f6\x18\x06 \x01(\x03\x12\x1b\n\x05state\x18\x07 \x02(\x0b\x32\x0c.PlayerState\x12\x0e\n\x06\x63ts_f8\x18\x08 \x01(\x08\x12\x0e\n\x06\x63ts_f9\x18\t \x01(\x08\x12\x13\n\x0blast_update\x18\n \x02(\x03\x12\x0f\n\x07\x63ts_f11\x18\x0b \x01(\x08\x12\x1a\n\x12last_player_update\x18\x0c \x02(\x03\x12\x14\n\x0clarg_wa_time\x18\r \x01(\x03\x12\x0f\n\x07\x63ts_f14\x18\x0e \x01(\x08\x12\x14\n\x0csubsSegments\x18\x0f \x03(\x03\x12\x13\n\x0bunsSegments\x18\x10 \x03(\x03\"S\n\rPlayerSummary\x12\x0f\n\x07plsu_f1\x18\x01 \x01(\x05\x12\x0f\n\x07plsu_f2\x18\x02 \x01(\x05\x12\x0f\n\x07plsu_f3\x18\x03 \x01(\x05\x12\x0f\n\x07plsu_f4\x18\x04 \x01(\x05\"\xb9\x01\n\x0fPlayerSummaries\x12\x10\n\x08plsus_f1\x18\x01 \x01(\x12\x12\x10\n\x08plsus_f2\x18\x02 \x01(\x12\x12\x10\n\x08plsus_f3\x18\x03 \x01(\x11\x12\x10\n\x08plsus_f4\x18\x04 \x01(\x11\x12\x10\n\x08plsus_f5\x18\x05 \x01(\x05\x12\x10\n\x08plsus_f6\x18\x06 \x01(\x05\x12\x10\n\x08plsus_f7\x18\x07 \x01(\x05\x12(\n\x10player_summaries\x18\x08 \x03(\x0b\x32\x0e.PlayerSummary\"k\n\x0cRelayAddress\x12\x10\n\x08lb_realm\x18\x01 \x01(\x05\x12\x11\n\tlb_course\x18\x02 \x01(\x05\x12\n\n\x02ip\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\x05\x12\r\n\x05ra_f5\x18\x05 \x01(\x02\x12\r\n\x05ra_f6\x18\x06 \x01(\x02\"`\n\tUdpConfig\x12&\n\x0frelay_addresses\x18\x01 \x03(\x0b\x32\r.RelayAddress\x12\r\n\x05uc_f2\x18\x02 \x01(\x05\x12\r\n\x05uc_f3\x18\x03 \x01(\x05\x12\r\n\x05uc_f4\x18\x04 \x01(\x05\"p\n\x11RelayAddressesVOD\x12\x10\n\x08lb_realm\x18\x01 \x01(\x05\x12\x11\n\tlb_course\x18\x02 \x01(\x05\x12&\n\x0frelay_addresses\x18\x03 \x03(\x0b\x32\r.RelayAddress\x12\x0e\n\x06rav_f4\x18\x04 \x01(\x08\"\x8d\x01\n\x0cUdpConfigVOD\x12/\n\x13relay_addresses_vod\x18\x01 \x03(\x0b\x32\x12.RelayAddressesVOD\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\x0e\n\x06ucv_f3\x18\x03 \x01(\x03\x12\x0e\n\x06ucv_f4\x18\x04 \x01(\x03\x12\x0e\n\x06ucv_f5\x18\x05 \x01(\x02\x12\x0e\n\x06ucv_f6\x18\x06 \x01(\x02\"E\n\x13PlayerRouteDistance\x12\x0e\n\x06\x62ikeId\x18\x01 \x01(\x05\x12\x0e\n\x06prd_f2\x18\x02 \x01(\x02\x12\x0e\n\x06prd_f3\x18\x03 \x01(\x05\"\xa2\x02\n\x17\x45ventSubgroupPlacements\x12\x0e\n\x06\x65sp_f1\x18\x01 \x01(\x05\x12(\n\nplayer_rd1\x18\x02 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd2\x18\x03 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd3\x18\x04 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd4\x18\x05 \x03(\x0b\x32\x14.PlayerRouteDistance\x12\x18\n\x10\x65ventTotalRiders\x18\x06 \x01(\x05\x12\x15\n\rbikeNetworkId\x18\x07 \x01(\x05\x12\x0e\n\x06\x65sp_f8\x18\x08 \x01(\x05\x12\x0e\n\x06\x65sp_f9\x18\t \x01(\x02\"\xc5\x05\n\x0eServerToClient\x12\x14\n\x0cserver_realm\x18\x01 \x01(\x03\x12\x11\n\tplayer_id\x18\x02 \x01(\x03\x12\x12\n\nworld_time\x18\x03 \x01(\x03\x12\r\n\x05seqno\x18\x04 \x01(\x05\x12\x0e\n\x06stc_f5\x18\x05 \x01(\x05\x12\x1c\n\x06states\x18\x08 \x03(\x0b\x32\x0c.PlayerState\x12 \n\x07updates\x18\t \x03(\x0b\x32\x0f.WorldAttribute\x12\x0f\n\x07stc_f10\x18\n \x03(\x03\x12\x0f\n\x07stc_f11\x18\x0b \x01(\x08\x12\x13\n\x0bzc_local_ip\x18\x0c \x01(\t\x12\x0f\n\x07stc_f13\x18\r \x01(\x03\x12\x10\n\x08zwifters\x18\x0e \x01(\x05\x12\x15\n\rzc_local_port\x18\x0f \x01(\x05\x12 \n\x0bzc_protocol\x18\x10 \x01(\x0e\x32\x0b.IPProtocol\x12\x0f\n\x07stc_f17\x18\x11 \x01(\x03\x12\x10\n\x08num_msgs\x18\x12 \x01(\x05\x12\x0e\n\x06msgnum\x18\x13 \x01(\x05\x12\x16\n\x0ehasSimultLogin\x18\x14 \x01(\x08\x12*\n\x10player_summaries\x18\x15 \x01(\x0b\x32\x10.PlayerSummaries\x12\x30\n\x0e\x65v_subgroup_ps\x18\x17 \x01(\x0b\x32\x18.EventSubgroupPlacements\x12\x1e\n\nudp_config\x18\x18 \x01(\x0b\x32\n.UdpConfig\x12\'\n\x10udp_config_vod_1\x18\x19 \x01(\x0b\x32\r.UdpConfigVOD\x12\x0f\n\x07stc_f26\x18\x1a \x01(\x05\x12\'\n\x10udp_config_vod_2\x18\x1b \x01(\x0b\x32\r.UdpConfigVOD\x12#\n\rplayer_states\x18\x1c \x03(\x0b\x32\x0c.PlayerState\x12\x1e\n\ntcp_config\x18\x1d \x01(\x0b\x32\n.TcpConfig\x12\x13\n\x0b\x61\x63kSubsSegm\x18\x1e \x03(\x03\"8\n\x05Ghost\x12\x11\n\tplayer_id\x18\x01 \x02(\x05\x12\x1c\n\x06states\x18\x02 \x03(\x0b\x32\x0c.PlayerState\" \n\x06Ghosts\x12\x16\n\x06ghosts\x18\x01 \x03(\x0b\x32\x06.Ghost\"k\n\x06RideOn\x12\x11\n\tplayer_id\x18\x01 \x02(\x03\x12\x14\n\x0cto_player_id\x18\x02 \x02(\x03\x12\x11\n\tfirstName\x18\x03 \x02(\t\x12\x10\n\x08lastName\x18\x04 \x02(\t\x12\x13\n\x0b\x63ountryCode\x18\x05 \x02(\x05* \n\x11ZofflineConstants\x12\x0b\n\x07RealmID\x10\x01*\x92\x03\n\x07WA_TYPE\x12\r\n\tWAT_LEAVE\x10\x02\x12\x0f\n\x0bWAT_RELOGIN\x10\x03\x12\x0f\n\x0bWAT_RIDE_ON\x10\x04\x12\x0b\n\x07WAT_SPA\x10\x05\x12\r\n\tWAT_EVENT\x10\x06\x12\x0e\n\nWAT_JOIN_E\x10\x07\x12\x0e\n\nWAT_LEFT_E\x10\x08\x12\x0f\n\x0bWAT_RQ_PROF\x10\t\x12\r\n\tWAT_INV_W\x10\n\x12\x0e\n\nWAT_KICKED\x10\x0b\x12\r\n\tWAT_WTIME\x10\x64\x12\r\n\tWAT_RTIME\x10\x65\x12\r\n\tWAT_B_ACT\x10\x66\x12\r\n\tWAT_GRP_M\x10g\x12\r\n\tWAT_PRI_M\x10h\x12\n\n\x06WAT_SR\x10i\x12\x0c\n\x08WAT_FLAG\x10j\x12\x0c\n\x08WAT_NONE\x10k\x12\x0b\n\x07WAT_RLA\x10l\x12\n\n\x06WAT_GE\x10m\x12\n\n\x06WAT_NM\x10n\x12\x0c\n\x08WAT_LATE\x10o\x12\n\n\x06WAT_RH\x10p\x12\r\n\tWAT_STATS\x10q\x12\r\n\tWAT_FENCE\x10r\x12\r\n\tWAT_BN_GE\x10s\x12\x0b\n\x07WAT_PPI\x10t*\x1e\n\nIPProtocol\x12\x07\n\x03UDP\x10\x01\x12\x07\n\x03TCP\x10\x02') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13udp-node-msgs.proto\x1a\rprofile.proto\x1a\x16per-session-info.proto\"\xb6\x02\n\x0eWorldAttribute\x12\r\n\x05wa_f1\x18\x01 \x01(\x03\x12\x14\n\x0cserver_realm\x18\x02 \x01(\x03\x12\x19\n\x07wa_type\x18\x03 \x01(\x0e\x32\x08.WA_TYPE\x12\x0f\n\x07payload\x18\x04 \x01(\x0c\x12\x17\n\x0fworld_time_born\x18\x05 \x01(\x03\x12\t\n\x01x\x18\x06 \x01(\x03\x12\x12\n\ny_altitude\x18\x07 \x01(\x03\x12\t\n\x01z\x18\x08 \x01(\x03\x12\x19\n\x11world_time_expire\x18\t \x01(\x03\x12\x0e\n\x06rel_id\x18\n \x01(\x03\x12\x12\n\nimportance\x18\x0b \x01(\x05\x12\x0e\n\x06wa_f12\x18\x0c \x01(\x03\x12\x0e\n\x06wa_f13\x18\r \x01(\x05\x12\x11\n\ttimestamp\x18\x0e \x01(\x03\x12\x0e\n\x06wa_f15\x18\x0f \x01(\x05\x12\x0e\n\x06wa_f16\x18\x10 \x01(\x03\"n\n\x0fPlayerLeftWorld\x12\x11\n\tplayer_id\x18\x01 \x02(\x03\x12\x12\n\nworld_time\x18\x02 \x01(\x03\x12\x14\n\x0c\x61notherLogin\x18\x03 \x01(\x08\x12\x0e\n\x06plw_f4\x18\x04 \x01(\x08\x12\x0e\n\x06plw_f5\x18\x05 \x03(\x12\"\x93\x05\n\x0bPlayerState\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x11\n\tworldTime\x18\x02 \x01(\x03\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x10\n\x08roadTime\x18\x04 \x01(\x05\x12\x0c\n\x04laps\x18\x05 \x01(\x05\x12\r\n\x05speed\x18\x06 \x01(\r\x12\r\n\x05ps_f7\x18\x07 \x01(\r\x12\x14\n\x0croadPosition\x18\x08 \x01(\x05\x12\x12\n\ncadenceUHz\x18\t \x01(\x05\x12\x0e\n\x06ps_f10\x18\n \x01(\x05\x12\x11\n\theartrate\x18\x0b \x01(\x05\x12\r\n\x05power\x18\x0c \x01(\x05\x12\x0f\n\x07heading\x18\r \x01(\x03\x12\x0c\n\x04lean\x18\x0e \x01(\x03\x12\x10\n\x08\x63limbing\x18\x0f \x01(\x05\x12\x0c\n\x04time\x18\x10 \x01(\x05\x12\x0e\n\x06ps_f17\x18\x11 \x01(\x05\x12\x10\n\x08\x66rameHue\x18\x12 \x01(\r\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\r\x12\x10\n\x08progress\x18\x15 \x01(\r\x12\x17\n\x0f\x63ustomizationId\x18\x16 \x01(\x03\x12\x14\n\x0cjustWatching\x18\x17 \x01(\x08\x12\x10\n\x08\x63\x61lories\x18\x18 \x01(\x05\x12\t\n\x01x\x18\x19 \x01(\x02\x12\x12\n\ny_altitude\x18\x1a \x01(\x02\x12\t\n\x01z\x18\x1b \x01(\x02\x12\x17\n\x0fwatchingRiderId\x18\x1c \x01(\x03\x12\x0f\n\x07groupId\x18\x1d \x01(\x03\x12\x15\n\x05sport\x18\x1f \x01(\x0e\x32\x06.Sport\x12\x0e\n\x06ps_f32\x18 \x01(\x02\x12\x0e\n\x06ps_f33\x18! \x01(\r\x12\x10\n\x08\x64ist_lat\x18\" \x01(\x02\x12\r\n\x05world\x18# \x01(\x05\x12\x0e\n\x06ps_f36\x18$ \x01(\r\x12\x0e\n\x06ps_f37\x18% \x01(\r\x12\x10\n\x08\x63\x61nSteer\x18& \x01(\x08\x12\r\n\x05route\x18\' \x01(\x05\"\xcd\x02\n\x0e\x43lientToServer\x12\x14\n\x0cserver_realm\x18\x01 \x02(\x03\x12\x11\n\tplayer_id\x18\x02 \x02(\x03\x12\x12\n\nworld_time\x18\x03 \x01(\x03\x12\r\n\x05seqno\x18\x04 \x01(\r\x12\x0e\n\x06\x63ts_f5\x18\x05 \x01(\r\x12\x0e\n\x06\x63ts_f6\x18\x06 \x01(\x03\x12\x1b\n\x05state\x18\x07 \x02(\x0b\x32\x0c.PlayerState\x12\x0e\n\x06\x63ts_f8\x18\x08 \x01(\x08\x12\x0e\n\x06\x63ts_f9\x18\t \x01(\x08\x12\x13\n\x0blast_update\x18\n \x02(\x03\x12\x0f\n\x07\x63ts_f11\x18\x0b \x01(\x08\x12\x1a\n\x12last_player_update\x18\x0c \x02(\x03\x12\x14\n\x0clarg_wa_time\x18\r \x01(\x03\x12\x0f\n\x07\x63ts_f14\x18\x0e \x01(\x08\x12\x14\n\x0csubsSegments\x18\x0f \x03(\x03\x12\x13\n\x0bunsSegments\x18\x10 \x03(\x03\"S\n\rPlayerSummary\x12\x0f\n\x07plsu_f1\x18\x01 \x01(\x05\x12\x0f\n\x07plsu_f2\x18\x02 \x01(\x05\x12\x0f\n\x07plsu_f3\x18\x03 \x01(\x05\x12\x0f\n\x07plsu_f4\x18\x04 \x01(\x05\"\xb9\x01\n\x0fPlayerSummaries\x12\x10\n\x08plsus_f1\x18\x01 \x01(\x12\x12\x10\n\x08plsus_f2\x18\x02 \x01(\x12\x12\x10\n\x08plsus_f3\x18\x03 \x01(\x11\x12\x10\n\x08plsus_f4\x18\x04 \x01(\x11\x12\x10\n\x08plsus_f5\x18\x05 \x01(\x05\x12\x10\n\x08plsus_f6\x18\x06 \x01(\x05\x12\x10\n\x08plsus_f7\x18\x07 \x01(\x05\x12(\n\x10player_summaries\x18\x08 \x03(\x0b\x32\x0e.PlayerSummary\"k\n\x0cRelayAddress\x12\x10\n\x08lb_realm\x18\x01 \x01(\x05\x12\x11\n\tlb_course\x18\x02 \x01(\x05\x12\n\n\x02ip\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\x05\x12\r\n\x05ra_f5\x18\x05 \x01(\x02\x12\r\n\x05ra_f6\x18\x06 \x01(\x02\"`\n\tUdpConfig\x12&\n\x0frelay_addresses\x18\x01 \x03(\x0b\x32\r.RelayAddress\x12\r\n\x05uc_f2\x18\x02 \x01(\x05\x12\r\n\x05uc_f3\x18\x03 \x01(\x05\x12\r\n\x05uc_f4\x18\x04 \x01(\x05\"p\n\x11RelayAddressesVOD\x12\x10\n\x08lb_realm\x18\x01 \x01(\x05\x12\x11\n\tlb_course\x18\x02 \x01(\x05\x12&\n\x0frelay_addresses\x18\x03 \x03(\x0b\x32\r.RelayAddress\x12\x0e\n\x06rav_f4\x18\x04 \x01(\x08\"\x8d\x01\n\x0cUdpConfigVOD\x12/\n\x13relay_addresses_vod\x18\x01 \x03(\x0b\x32\x12.RelayAddressesVOD\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\x0e\n\x06ucv_f3\x18\x03 \x01(\x03\x12\x0e\n\x06ucv_f4\x18\x04 \x01(\x03\x12\x0e\n\x06ucv_f5\x18\x05 \x01(\x02\x12\x0e\n\x06ucv_f6\x18\x06 \x01(\x02\"R\n\x13PlayerRouteDistance\x12\x11\n\tplayer_id\x18\x01 \x01(\x05\x12\x18\n\x10\x64istance_covered\x18\x02 \x01(\x02\x12\x0e\n\x06prd_f3\x18\x03 \x01(\x05\"\xac\x02\n\x17\x45ventSubgroupPlacements\x12\x10\n\x08position\x18\x01 \x01(\x05\x12(\n\nplayer_rd1\x18\x02 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd2\x18\x03 \x03(\x0b\x32\x14.PlayerRouteDistance\x12\x30\n\x12\x65ventRiderPosition\x18\x04 \x03(\x0b\x32\x14.PlayerRouteDistance\x12(\n\nplayer_rd4\x18\x05 \x03(\x0b\x32\x14.PlayerRouteDistance\x12\x18\n\x10\x65ventTotalRiders\x18\x06 \x01(\x05\x12\x15\n\rbikeNetworkId\x18\x07 \x01(\x05\x12\x0e\n\x06\x65sp_f8\x18\x08 \x01(\x05\x12\x0e\n\x06\x65sp_f9\x18\t \x01(\x02\"\xc5\x05\n\x0eServerToClient\x12\x14\n\x0cserver_realm\x18\x01 \x01(\x03\x12\x11\n\tplayer_id\x18\x02 \x01(\x03\x12\x12\n\nworld_time\x18\x03 \x01(\x03\x12\r\n\x05seqno\x18\x04 \x01(\x05\x12\x0e\n\x06stc_f5\x18\x05 \x01(\x05\x12\x1c\n\x06states\x18\x08 \x03(\x0b\x32\x0c.PlayerState\x12 \n\x07updates\x18\t \x03(\x0b\x32\x0f.WorldAttribute\x12\x0f\n\x07stc_f10\x18\n \x03(\x03\x12\x0f\n\x07stc_f11\x18\x0b \x01(\x08\x12\x13\n\x0bzc_local_ip\x18\x0c \x01(\t\x12\x0f\n\x07stc_f13\x18\r \x01(\x03\x12\x10\n\x08zwifters\x18\x0e \x01(\x05\x12\x15\n\rzc_local_port\x18\x0f \x01(\x05\x12 \n\x0bzc_protocol\x18\x10 \x01(\x0e\x32\x0b.IPProtocol\x12\x0f\n\x07stc_f17\x18\x11 \x01(\x03\x12\x10\n\x08num_msgs\x18\x12 \x01(\x05\x12\x0e\n\x06msgnum\x18\x13 \x01(\x05\x12\x16\n\x0ehasSimultLogin\x18\x14 \x01(\x08\x12*\n\x10player_summaries\x18\x15 \x01(\x0b\x32\x10.PlayerSummaries\x12\x30\n\x0e\x65v_subgroup_ps\x18\x17 \x01(\x0b\x32\x18.EventSubgroupPlacements\x12\x1e\n\nudp_config\x18\x18 \x01(\x0b\x32\n.UdpConfig\x12\'\n\x10udp_config_vod_1\x18\x19 \x01(\x0b\x32\r.UdpConfigVOD\x12\x0f\n\x07stc_f26\x18\x1a \x01(\x05\x12\'\n\x10udp_config_vod_2\x18\x1b \x01(\x0b\x32\r.UdpConfigVOD\x12#\n\rplayer_states\x18\x1c \x03(\x0b\x32\x0c.PlayerState\x12\x1e\n\ntcp_config\x18\x1d \x01(\x0b\x32\n.TcpConfig\x12\x13\n\x0b\x61\x63kSubsSegm\x18\x1e \x03(\x03\"8\n\x05Ghost\x12\x11\n\tplayer_id\x18\x01 \x02(\x05\x12\x1c\n\x06states\x18\x02 \x03(\x0b\x32\x0c.PlayerState\" \n\x06Ghosts\x12\x16\n\x06ghosts\x18\x01 \x03(\x0b\x32\x06.Ghost\"k\n\x06RideOn\x12\x11\n\tplayer_id\x18\x01 \x02(\x03\x12\x14\n\x0cto_player_id\x18\x02 \x02(\x03\x12\x11\n\tfirstName\x18\x03 \x02(\t\x12\x10\n\x08lastName\x18\x04 \x02(\t\x12\x13\n\x0b\x63ountryCode\x18\x05 \x02(\x05* \n\x11ZofflineConstants\x12\x0b\n\x07RealmID\x10\x01*\x92\x03\n\x07WA_TYPE\x12\r\n\tWAT_LEAVE\x10\x02\x12\x0f\n\x0bWAT_RELOGIN\x10\x03\x12\x0f\n\x0bWAT_RIDE_ON\x10\x04\x12\x0b\n\x07WAT_SPA\x10\x05\x12\r\n\tWAT_EVENT\x10\x06\x12\x0e\n\nWAT_JOIN_E\x10\x07\x12\x0e\n\nWAT_LEFT_E\x10\x08\x12\x0f\n\x0bWAT_RQ_PROF\x10\t\x12\r\n\tWAT_INV_W\x10\n\x12\x0e\n\nWAT_KICKED\x10\x0b\x12\r\n\tWAT_WTIME\x10\x64\x12\r\n\tWAT_RTIME\x10\x65\x12\r\n\tWAT_B_ACT\x10\x66\x12\r\n\tWAT_GRP_M\x10g\x12\r\n\tWAT_PRI_M\x10h\x12\n\n\x06WAT_SR\x10i\x12\x0c\n\x08WAT_FLAG\x10j\x12\x0c\n\x08WAT_NONE\x10k\x12\x0b\n\x07WAT_RLA\x10l\x12\n\n\x06WAT_GE\x10m\x12\n\n\x06WAT_NM\x10n\x12\x0c\n\x08WAT_LATE\x10o\x12\n\n\x06WAT_RH\x10p\x12\r\n\tWAT_STATS\x10q\x12\r\n\tWAT_FENCE\x10r\x12\r\n\tWAT_BN_GE\x10s\x12\x0b\n\x07WAT_PPI\x10t*\xac\x01\n\x0eUserBikeAction\x12\r\n\tUBA_ELBOW\x10\x00\x12\x0c\n\x08UBA_WAVE\x10\x01\x12\n\n\x06UBA_02\x10\x02\x12\x0e\n\nUBA_RIDEON\x10\x03\x12\x0e\n\nUBA_HAMMER\x10\x04\x12\x0c\n\x08UBA_NICE\x10\x05\x12\x10\n\x0cUBA_BRING_IT\x10\x06\x12\r\n\tUBA_TOAST\x10\x07\x12\x0c\n\x08UBA_BELL\x10\x08\x12\x14\n\x10UBA_HOLIDAY_WAVE\x10\t*\x1e\n\nIPProtocol\x12\x07\n\x03UDP\x10\x01\x12\x07\n\x03TCP\x10\x02') _ZOFFLINECONSTANTS = DESCRIPTOR.enum_types_by_name['ZofflineConstants'] ZofflineConstants = enum_type_wrapper.EnumTypeWrapper(_ZOFFLINECONSTANTS) _WA_TYPE = DESCRIPTOR.enum_types_by_name['WA_TYPE'] WA_TYPE = enum_type_wrapper.EnumTypeWrapper(_WA_TYPE) +_USERBIKEACTION = DESCRIPTOR.enum_types_by_name['UserBikeAction'] +UserBikeAction = enum_type_wrapper.EnumTypeWrapper(_USERBIKEACTION) _IPPROTOCOL = DESCRIPTOR.enum_types_by_name['IPProtocol'] IPProtocol = enum_type_wrapper.EnumTypeWrapper(_IPPROTOCOL) RealmID = 1 @@ -53,11 +55,22 @@ WAT_STATS = 113 WAT_FENCE = 114 WAT_BN_GE = 115 WAT_PPI = 116 +UBA_ELBOW = 0 +UBA_WAVE = 1 +UBA_02 = 2 +UBA_RIDEON = 3 +UBA_HAMMER = 4 +UBA_NICE = 5 +UBA_BRING_IT = 6 +UBA_TOAST = 7 +UBA_BELL = 8 +UBA_HOLIDAY_WAVE = 9 UDP = 1 TCP = 2 _WORLDATTRIBUTE = DESCRIPTOR.message_types_by_name['WorldAttribute'] +_PLAYERLEFTWORLD = DESCRIPTOR.message_types_by_name['PlayerLeftWorld'] _PLAYERSTATE = DESCRIPTOR.message_types_by_name['PlayerState'] _CLIENTTOSERVER = DESCRIPTOR.message_types_by_name['ClientToServer'] _PLAYERSUMMARY = DESCRIPTOR.message_types_by_name['PlayerSummary'] @@ -79,6 +92,13 @@ WorldAttribute = _reflection.GeneratedProtocolMessageType('WorldAttribute', (_me }) _sym_db.RegisterMessage(WorldAttribute) +PlayerLeftWorld = _reflection.GeneratedProtocolMessageType('PlayerLeftWorld', (_message.Message,), { + 'DESCRIPTOR' : _PLAYERLEFTWORLD, + '__module__' : 'udp_node_msgs_pb2' + # @@protoc_insertion_point(class_scope:PlayerLeftWorld) + }) +_sym_db.RegisterMessage(PlayerLeftWorld) + PlayerState = _reflection.GeneratedProtocolMessageType('PlayerState', (_message.Message,), { 'DESCRIPTOR' : _PLAYERSTATE, '__module__' : 'udp_node_msgs_pb2' @@ -180,40 +200,44 @@ _sym_db.RegisterMessage(RideOn) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _ZOFFLINECONSTANTS._serialized_start=3386 - _ZOFFLINECONSTANTS._serialized_end=3418 - _WA_TYPE._serialized_start=3421 - _WA_TYPE._serialized_end=3823 - _IPPROTOCOL._serialized_start=3825 - _IPPROTOCOL._serialized_end=3855 + _ZOFFLINECONSTANTS._serialized_start=3523 + _ZOFFLINECONSTANTS._serialized_end=3555 + _WA_TYPE._serialized_start=3558 + _WA_TYPE._serialized_end=3960 + _USERBIKEACTION._serialized_start=3963 + _USERBIKEACTION._serialized_end=4135 + _IPPROTOCOL._serialized_start=4137 + _IPPROTOCOL._serialized_end=4167 _WORLDATTRIBUTE._serialized_start=63 _WORLDATTRIBUTE._serialized_end=373 - _PLAYERSTATE._serialized_start=376 - _PLAYERSTATE._serialized_end=1033 - _CLIENTTOSERVER._serialized_start=1036 - _CLIENTTOSERVER._serialized_end=1369 - _PLAYERSUMMARY._serialized_start=1371 - _PLAYERSUMMARY._serialized_end=1454 - _PLAYERSUMMARIES._serialized_start=1457 - _PLAYERSUMMARIES._serialized_end=1642 - _RELAYADDRESS._serialized_start=1644 - _RELAYADDRESS._serialized_end=1751 - _UDPCONFIG._serialized_start=1753 - _UDPCONFIG._serialized_end=1849 - _RELAYADDRESSESVOD._serialized_start=1851 - _RELAYADDRESSESVOD._serialized_end=1963 - _UDPCONFIGVOD._serialized_start=1966 - _UDPCONFIGVOD._serialized_end=2107 - _PLAYERROUTEDISTANCE._serialized_start=2109 - _PLAYERROUTEDISTANCE._serialized_end=2178 - _EVENTSUBGROUPPLACEMENTS._serialized_start=2181 - _EVENTSUBGROUPPLACEMENTS._serialized_end=2471 - _SERVERTOCLIENT._serialized_start=2474 - _SERVERTOCLIENT._serialized_end=3183 - _GHOST._serialized_start=3185 - _GHOST._serialized_end=3241 - _GHOSTS._serialized_start=3243 - _GHOSTS._serialized_end=3275 - _RIDEON._serialized_start=3277 - _RIDEON._serialized_end=3384 + _PLAYERLEFTWORLD._serialized_start=375 + _PLAYERLEFTWORLD._serialized_end=485 + _PLAYERSTATE._serialized_start=488 + _PLAYERSTATE._serialized_end=1147 + _CLIENTTOSERVER._serialized_start=1150 + _CLIENTTOSERVER._serialized_end=1483 + _PLAYERSUMMARY._serialized_start=1485 + _PLAYERSUMMARY._serialized_end=1568 + _PLAYERSUMMARIES._serialized_start=1571 + _PLAYERSUMMARIES._serialized_end=1756 + _RELAYADDRESS._serialized_start=1758 + _RELAYADDRESS._serialized_end=1865 + _UDPCONFIG._serialized_start=1867 + _UDPCONFIG._serialized_end=1963 + _RELAYADDRESSESVOD._serialized_start=1965 + _RELAYADDRESSESVOD._serialized_end=2077 + _UDPCONFIGVOD._serialized_start=2080 + _UDPCONFIGVOD._serialized_end=2221 + _PLAYERROUTEDISTANCE._serialized_start=2223 + _PLAYERROUTEDISTANCE._serialized_end=2305 + _EVENTSUBGROUPPLACEMENTS._serialized_start=2308 + _EVENTSUBGROUPPLACEMENTS._serialized_end=2608 + _SERVERTOCLIENT._serialized_start=2611 + _SERVERTOCLIENT._serialized_end=3320 + _GHOST._serialized_start=3322 + _GHOST._serialized_end=3378 + _GHOSTS._serialized_start=3380 + _GHOSTS._serialized_end=3412 + _RIDEON._serialized_start=3414 + _RIDEON._serialized_end=3521 # @@protoc_insertion_point(module_scope) diff --git a/zwift_offline.py b/zwift_offline.py index b85e244..52b9198 100644 --- a/zwift_offline.py +++ b/zwift_offline.py @@ -1928,20 +1928,19 @@ def api_private_event_new(): #{"culling":true,"description":"mesg","distanceInMe partial_profile = get_partial_profile(current_user.player_id) json_pe['organizerProfileId'] = current_user.player_id json_pe['organizerFirstName'] = partial_profile.first_name - json_pe['organizerProfileId'] = partial_profile.last_name + json_pe['organizerLastName'] = partial_profile.last_name json_pe['updateDate'] = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ") json_pe['organizerImageUrl'] = "https://us-or-rly101.zwift.com/download/%s/avatarLarge.jpg" % current_user.player_id - #"invitedProfileIds":[id1,id2,...] - todo: send WorldAttribute 'invite' + #"invitedProfileIds":[id1,id2,...] - todo: send WAT_JOIN_E(PlayerJoinedEvent with ev_sg_id) to myself and 'invite' to others glb_private_events[pe_id] = json_pe return jsonify({"id":pe_id}), 201 @app.route('/api/private_event/feed', methods=['GET', 'POST']) -#[{"id":2894545,"eventSubgroupId":3459785,"name":"Beach Island Loop","sport":"CYCLING","eventStart":"2022-03-17T16:27:00Z","routeId":2474227587,"durationInSeconds":0,"distanceInMeters":13800.0,"inviteStatus":"ACCEPTED","invitedTotalCount":3,"acceptedTotalCount":1,"acceptedFolloweeCount":0,"organizerImageUrl":"https://static-cdn.zwift.com/prod/profile/b44242c2-2367483","organizerProfileId":4485018,"organizerFirstName":"Youry","organizerLastName":"Pershin","updateDate":"2022-03-16T21:21:41Z","laps":0,"rubberbanding":true}] def api_private_event_feed(): ret = [] for pe in glb_private_events.values(): ret.append(pe) - print(ret) + #print(ret) return jsonify(ret) @app.route('/api/private_event/entitlement', methods=['GET'])