new version and proto++

This commit is contained in:
Юрий Першин
2022-02-20 13:34:04 +05:00
parent 4affea6b9c
commit f94263b5ae
25 changed files with 120 additions and 120 deletions
@@ -1,9 +1,9 @@
<Zwift
version="1.0.100427"
sversion="1.22.1 (100427)"
gbranch="build/100427-rc-1.22.1.3-1.22.1"
gcommit="6768a1823bc9db8f5b0baa2077d421429bc685e7"
version="1.0.100456"
sversion="1.22.4 (100456)"
gbranch="build/100456-rc-1.22.4.3-1.22.4"
gcommit="e69aa1e00e3650b9e26593fd3102b4957de7075d"
GAME_URL="https://us-or-rly101.zwift.com"
manifest="ZwiftMac_1.0.100427_0acf466a_manifest.xml"
manifest_checksum="-406929445"
ver_cur_checksum="-282448884"/>
manifest="ZwiftMac_1.0.100456_3289e03b_manifest.xml"
manifest_checksum="453629562"
ver_cur_checksum="1312611185"/>
@@ -1,9 +1,9 @@
<Zwift
version="1.0.100427"
sversion="1.22.1 (100427)"
gbranch="build/100427-rc-1.22.1.3-1.22.1"
gcommit="6768a1823bc9db8f5b0baa2077d421429bc685e7"
version="1.0.100456"
sversion="1.22.4 (100456)"
gbranch="build/100456-rc-1.22.4.3-1.22.4"
gcommit="e69aa1e00e3650b9e26593fd3102b4957de7075d"
GAME_URL="https://us-or-rly101.zwift.com"
manifest="Zwift_1.0.100427_0acf466a_manifest.xml"
manifest_checksum="36781012"
ver_cur_checksum="85416406"/>
manifest="Zwift_1.0.100456_3289e03b_manifest.xml"
manifest_checksum="-779407785"
ver_cur_checksum="1582609789"/>
Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

+9 -9
View File
@@ -3,18 +3,18 @@ syntax = "proto2";
message Goal {
optional uint64 id = 1;
optional uint64 player_id = 2;
optional uint32 f3 = 3; /* Q: status or sport? A: I see zwift::protobuf::Sport_IsValid */
optional string name = 4;
optional uint32 type = 5; /* 0=distance, 1=time */
optional uint32 periodicity = 6; /* 0=weekly, 1=monthly */
optional int64 f3 = 3; /* TODO: rename to sport; int64 on wire, stored as int32 */
optional string name = 4; // i.e. "Monthly time goal"
optional int64 type = 5; /* 0=distance, 1=time; int64 on wire, stored as int32 */
optional int64 periodicity = 6; /* 0=weekly, 1=monthly; int64 on wire, stored as int32 */
optional float target_distance = 7; /* in meters. set to dur for dur goals */
optional float target_duration = 8; /* in minutes. set to dist for dist goals */
optional float actual_distance = 9; /* in minutes. is also set for dur goals? */
optional float actual_duration = 10; /* in meters. is also set for dist goals? */
optional float actual_distance = 9; /* in meters. is also set for dur goals? */
optional float actual_duration = 10; /* in minutes. is also set for dist goals? */
optional uint64 created_on = 11; /* in ms since epoch */
optional uint64 period_end_date = 12; /* "" */
optional uint64 f13 = 13; /* status or sport? */
//optional string f14 = 14;
optional uint64 period_end_date = 12;
optional uint64 f13 = 13; /* TODO: rename to status (0=active, 1=retired); int64 on wire, stored as int32 */
//optional string f14 = 14; /* TODO: find usage: GoalsManager? */
}
message Goals {
+1 -1
View File
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ngoal.proto\"\x80\x02\n\x04Goal\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x01(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\r\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0c\n\x04type\x18\x05 \x01(\r\x12\x13\n\x0bperiodicity\x18\x06 \x01(\r\x12\x17\n\x0ftarget_distance\x18\x07 \x01(\x02\x12\x17\n\x0ftarget_duration\x18\x08 \x01(\x02\x12\x17\n\x0f\x61\x63tual_distance\x18\t \x01(\x02\x12\x17\n\x0f\x61\x63tual_duration\x18\n \x01(\x02\x12\x12\n\ncreated_on\x18\x0b \x01(\x04\x12\x17\n\x0fperiod_end_date\x18\x0c \x01(\x04\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x04\"\x1d\n\x05Goals\x12\x14\n\x05goals\x18\x01 \x03(\x0b\x32\x05.Goal')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ngoal.proto\"\x80\x02\n\x04Goal\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x01(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\x03\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0c\n\x04type\x18\x05 \x01(\x03\x12\x13\n\x0bperiodicity\x18\x06 \x01(\x03\x12\x17\n\x0ftarget_distance\x18\x07 \x01(\x02\x12\x17\n\x0ftarget_duration\x18\x08 \x01(\x02\x12\x17\n\x0f\x61\x63tual_distance\x18\t \x01(\x02\x12\x17\n\x0f\x61\x63tual_duration\x18\n \x01(\x02\x12\x12\n\ncreated_on\x18\x0b \x01(\x04\x12\x17\n\x0fperiod_end_date\x18\x0c \x01(\x04\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\x04\"\x1d\n\x05Goals\x12\x14\n\x05goals\x18\x01 \x03(\x0b\x32\x05.Goal')
+3 -3
View File
@@ -3,8 +3,8 @@ syntax = "proto2";
message TcpAddress {
optional string ip = 1;
optional int32 port = 2;
optional int32 f3 = 3;
optional int32 f4 = 4;
optional int32 f3 = 3; //TcpAddressService::updateAddresses
optional int32 f4 = 4; //TcpAddressService::updateAddresses: cluster id?
}
message TcpConfig {
@@ -22,5 +22,5 @@ message PerSessionInfo {
optional PartnersUrls apis = 2;
optional uint64 time = 3;
optional TcpConfig nodes = 4;
optional int32 f5 = 5;
optional int32 maxSegmSubscrs = 5; //if received, sub_718DE99570 puts log message "Received max allowed segment subscriptions from session: %d", m_maxSegmSubscrs and stores it into GlobalState...
}
+3 -3
View File
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16per-session-info.proto\">\n\nTcpAddress\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"\'\n\tTcpConfig\x12\x1a\n\x05nodes\x18\x01 \x03(\x0b\x32\x0b.TcpAddress\"A\n\x0cPartnersUrls\x12\x16\n\x0etodaysplan_url\x18\x01 \x01(\t\x12\x19\n\x11trainingpeaks_url\x18\x02 \x01(\t\"u\n\x0ePerSessionInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t\x12\x1b\n\x04\x61pis\x18\x02 \x01(\x0b\x32\r.PartnersUrls\x12\x0c\n\x04time\x18\x03 \x01(\x04\x12\x19\n\x05nodes\x18\x04 \x01(\x0b\x32\n.TcpConfig\x12\n\n\x02\x66\x35\x18\x05 \x01(\x05')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16per-session-info.proto\">\n\nTcpAddress\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\n\n\x02\x66\x33\x18\x03 \x01(\x05\x12\n\n\x02\x66\x34\x18\x04 \x01(\x05\"\'\n\tTcpConfig\x12\x1a\n\x05nodes\x18\x01 \x03(\x0b\x32\x0b.TcpAddress\"A\n\x0cPartnersUrls\x12\x16\n\x0etodaysplan_url\x18\x01 \x01(\t\x12\x19\n\x11trainingpeaks_url\x18\x02 \x01(\t\"\x81\x01\n\x0ePerSessionInfo\x12\x11\n\trelay_url\x18\x01 \x02(\t\x12\x1b\n\x04\x61pis\x18\x02 \x01(\x0b\x32\r.PartnersUrls\x12\x0c\n\x04time\x18\x03 \x01(\x04\x12\x19\n\x05nodes\x18\x04 \x01(\x0b\x32\n.TcpConfig\x12\x16\n\x0emaxSegmSubscrs\x18\x05 \x01(\x05')
@@ -59,6 +59,6 @@ if _descriptor._USE_C_DESCRIPTORS == False:
_TCPCONFIG._serialized_end=129
_PARTNERSURLS._serialized_start=131
_PARTNERSURLS._serialized_end=196
_PERSESSIONINFO._serialized_start=198
_PERSESSIONINFO._serialized_end=315
_PERSESSIONINFO._serialized_start=199
_PERSESSIONINFO._serialized_end=328
# @@protoc_insertion_point(module_scope)
+2 -2
View File
@@ -73,7 +73,7 @@ message Profile { // should be renamed (name from Zwift debug info: PlayerProfil
optional uint32 achievement_level = 49;
optional bool use_metric = 50;
optional bool f51 = 51; // isRunner ??? -> +45.455 to something (BikeEntity::CreateNamePlate)
optional bool strava_premium = 51;
optional uint32 power_source_model = 52;
optional uint32 f53 = 53; //??? empty
optional uint32 f54 = 54; //??? empty
@@ -136,7 +136,7 @@ message Profile { // should be renamed (name from Zwift debug info: PlayerProfil
optional uint32 run_achievement_level = 84;
optional uint32 total_run_time_in_minutes = 85;
optional Sport sport = 86;
optional uint32 f87 = 87; //??? 360 or -360
optional uint32 utc_offset_in_minutes = 87;
optional bool connected_to_under_armour = 88;
optional string preferred_language = 89;
optional uint32 hair_colour = 90;
+42 -42
View File
File diff suppressed because one or more lines are too long
+10 -10
View File
@@ -3,8 +3,8 @@ syntax = "proto2";
message SegmentResult {
optional uint64 id = 1;
required uint64 player_id = 2;
optional uint64 f3 = 3;
optional uint64 f4 = 4;
optional uint64 f3 = 3; //=g_CurrentServerRealmID
optional uint64 f4 = 4; //=WorldID
optional uint64 segment_id = 5;
optional uint64 event_subgroup_id = 6;
required string first_name = 7;
@@ -12,16 +12,16 @@ message SegmentResult {
optional uint64 world_time = 9;
optional string finish_time_str = 10;
required uint64 elapsed_ms = 11;
optional sint64 f12 = 12;
optional int64 f12 = 12; //stored as 32 bit; =1 if PowerMeter, =0 if zPower, also saw -1??? (in ZNETWORK_RegisterPlayerSegmentResult from m_bikeEntity->m_hasPowerMeter)
optional uint32 f13 = 13; //weight_in_grams
optional uint32 f14 = 14;
optional uint32 f14 = 14; //:=0 in Leaderboards::SetPlayerSegmentResult
optional uint32 f15 = 15; //avg_power
optional bool f16 = 16;
optional string f17 = 17;
optional uint64 f18 = 18; //TODO: enum PlayerType
optional uint32 f19 = 19;
optional uint32 f20 = 20; //TODO: enum Sport
//optional uint64 f21 = 21;
optional bool f16 = 16; //:= isMale
optional string f17 = 17; //ISO8601 time (magicLeaderboardBirthday := const @ ZNETWORK_Initialize)
optional uint64 f18 = 18; //TODO: enum PlayerType, stored as 32 bit
optional uint32 f19 = 19; //avg_hr(ZNETWORK_RaceResultEntrySaveRequest):=m_computer.m_accumHeartRate/m_computer.m_accumTime @ZNETWORK_RegisterLocalPlayersSegmentResult (or 0.0)
optional uint64 f20 = 20; //TODO: enum Sport, stored as 32 bit
//optional uint64 f21 = 21; //:=activityId (may be -1)
//optional bool f22 = 22;
//optional string f23 = 23;
}
+1 -1
View File
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14segment-result.proto\"\xd2\x02\n\rSegmentResult\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x02(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\x04\x12\n\n\x02\x66\x34\x18\x04 \x01(\x04\x12\x12\n\nsegment_id\x18\x05 \x01(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x06 \x01(\x04\x12\x12\n\nfirst_name\x18\x07 \x02(\t\x12\x11\n\tlast_name\x18\x08 \x02(\t\x12\x12\n\nworld_time\x18\t \x01(\x04\x12\x17\n\x0f\x66inish_time_str\x18\n \x01(\t\x12\x12\n\nelapsed_ms\x18\x0b \x02(\x04\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x12\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\r\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\r\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\r\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x08\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\t\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\r\"z\n\x0eSegmentResults\x12\x10\n\x08world_id\x18\x01 \x02(\x04\x12\x12\n\nsegment_id\x18\x02 \x02(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x03 \x01(\x04\x12\'\n\x0fsegment_results\x18\x04 \x03(\x0b\x32\x0e.SegmentResult')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14segment-result.proto\"\xd2\x02\n\rSegmentResult\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x11\n\tplayer_id\x18\x02 \x02(\x04\x12\n\n\x02\x66\x33\x18\x03 \x01(\x04\x12\n\n\x02\x66\x34\x18\x04 \x01(\x04\x12\x12\n\nsegment_id\x18\x05 \x01(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x06 \x01(\x04\x12\x12\n\nfirst_name\x18\x07 \x02(\t\x12\x11\n\tlast_name\x18\x08 \x02(\t\x12\x12\n\nworld_time\x18\t \x01(\x04\x12\x17\n\x0f\x66inish_time_str\x18\n \x01(\t\x12\x12\n\nelapsed_ms\x18\x0b \x02(\x04\x12\x0b\n\x03\x66\x31\x32\x18\x0c \x01(\x03\x12\x0b\n\x03\x66\x31\x33\x18\r \x01(\r\x12\x0b\n\x03\x66\x31\x34\x18\x0e \x01(\r\x12\x0b\n\x03\x66\x31\x35\x18\x0f \x01(\r\x12\x0b\n\x03\x66\x31\x36\x18\x10 \x01(\x08\x12\x0b\n\x03\x66\x31\x37\x18\x11 \x01(\t\x12\x0b\n\x03\x66\x31\x38\x18\x12 \x01(\x04\x12\x0b\n\x03\x66\x31\x39\x18\x13 \x01(\r\x12\x0b\n\x03\x66\x32\x30\x18\x14 \x01(\x04\"z\n\x0eSegmentResults\x12\x10\n\x08world_id\x18\x01 \x02(\x04\x12\x12\n\nsegment_id\x18\x02 \x02(\x04\x12\x19\n\x11\x65vent_subgroup_id\x18\x03 \x01(\x04\x12\'\n\x0fsegment_results\x18\x04 \x03(\x0b\x32\x0e.SegmentResult')
+4 -4
View File
@@ -64,10 +64,10 @@ message PlayerState {
//field 19:
//byte[0].bits[0,1]: HasPowerMeter, HasPhoneConnected
//byte[0].bits[2,3]: RoadDirectionForward, ??? !BikeEntity.field_DCC || BikeEntity.disSteer
//byte[0].bits[4]: ÷èòàåòñÿ â BikeEntity::ProcessNewPacket, èìååò îòíîøåíèå ê ðóëåíèþ
//byte[0].bits[4]: read in BikeEntity::ProcessNewPacket, steering-related
//byte[1]: =0 ???
//byte[2]: fallback for world in getMapRevisionId
//byte[3]: realRideons (not counted yet in BikeEntity::m_rideons) @ BikeEntity::UpdateRideOns
//byte[3]: realRideons (not counted yet in BikeEntity::m_rideons) @ BikeEntity::UpdateRideOns, see also BikeEntity::Update
optional uint32 f19 = 19;
optional uint32 f20 = 20; //road_id: (f20 & 0xff00) >> 8 (=16777231 -> road_id = 0)
optional uint32 progress = 21; // WorkoutMode = progress & 0xF
@@ -85,8 +85,8 @@ message PlayerState {
optional uint32 f33 = 33;
optional float f34 = 34; //= BikeEntity.field_F00 (=219.56387 and incr if moving)
optional int32 world = 35;
optional uint32 f36 = 36; // = f(BikeEntity.field_2a28)
optional uint32 f37 = 37; // = f(BikeEntity.field_2a28)
optional uint32 f36 = 36; // = f(BikeEntity.field_2a28) BikeEntity::CreateNewPacket
optional uint32 f37 = 37; // = f(BikeEntity.field_2a28) BikeEntity::CreateNewPacket
optional bool canSteer = 38; // = BikeEntity.m_canSteer
optional int32 route = 39;
}
+4 -3
View File
@@ -1,12 +1,13 @@
syntax = "proto2";
//All decompiled. TODO: check
message ZFile { // real name ZFileProto ?
message ZFileProto {
required uint64 id = 1;
required string folder = 2;
required string filename = 3;
required uint64 timestamp = 4; // ZFileProto: uint64=5 and string=4...
optional string f4 = 4; //NetworkClientImpl::generateZFileGzip: empty
required uint64 timestamp = 5;
}
message ZFilesProto {
repeated ZFile zfiles = 1;
repeated ZFileProto zfiles = 1;
}
+10 -10
View File
@@ -14,18 +14,18 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0czfiles.proto\"H\n\x05ZFile\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0e\n\x06\x66older\x18\x02 \x02(\t\x12\x10\n\x08\x66ilename\x18\x03 \x02(\t\x12\x11\n\ttimestamp\x18\x04 \x02(\x04\"%\n\x0bZFilesProto\x12\x16\n\x06zfiles\x18\x01 \x03(\x0b\x32\x06.ZFile')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0czfiles.proto\"Y\n\nZFileProto\x12\n\n\x02id\x18\x01 \x02(\x04\x12\x0e\n\x06\x66older\x18\x02 \x02(\t\x12\x10\n\x08\x66ilename\x18\x03 \x02(\t\x12\n\n\x02\x66\x34\x18\x04 \x01(\t\x12\x11\n\ttimestamp\x18\x05 \x02(\x04\"*\n\x0bZFilesProto\x12\x1b\n\x06zfiles\x18\x01 \x03(\x0b\x32\x0b.ZFileProto')
_ZFILE = DESCRIPTOR.message_types_by_name['ZFile']
_ZFILEPROTO = DESCRIPTOR.message_types_by_name['ZFileProto']
_ZFILESPROTO = DESCRIPTOR.message_types_by_name['ZFilesProto']
ZFile = _reflection.GeneratedProtocolMessageType('ZFile', (_message.Message,), {
'DESCRIPTOR' : _ZFILE,
ZFileProto = _reflection.GeneratedProtocolMessageType('ZFileProto', (_message.Message,), {
'DESCRIPTOR' : _ZFILEPROTO,
'__module__' : 'zfiles_pb2'
# @@protoc_insertion_point(class_scope:ZFile)
# @@protoc_insertion_point(class_scope:ZFileProto)
})
_sym_db.RegisterMessage(ZFile)
_sym_db.RegisterMessage(ZFileProto)
ZFilesProto = _reflection.GeneratedProtocolMessageType('ZFilesProto', (_message.Message,), {
'DESCRIPTOR' : _ZFILESPROTO,
@@ -37,8 +37,8 @@ _sym_db.RegisterMessage(ZFilesProto)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_ZFILE._serialized_start=16
_ZFILE._serialized_end=88
_ZFILESPROTO._serialized_start=90
_ZFILESPROTO._serialized_end=127
_ZFILEPROTO._serialized_start=16
_ZFILEPROTO._serialized_end=105
_ZFILESPROTO._serialized_start=107
_ZFILESPROTO._serialized_end=149
# @@protoc_insertion_point(module_scope)
+10 -11
View File
@@ -45,6 +45,15 @@ BOTS_DIR = '%s/bots' % SCRIPT_DIR
PROXYPASS_FILE = "%s/cdn-proxy.txt" % STORAGE_DIR
SERVER_IP_FILE = "%s/server-ip.txt" % STORAGE_DIR
DISCORD_CONFIG_FILE = "%s/discord.cfg" % STORAGE_DIR
if os.path.isfile(DISCORD_CONFIG_FILE):
from discord_bot import DiscordThread
discord = DiscordThread(DISCORD_CONFIG_FILE)
else:
class DummyDiscord():
def send_message(self, msg, sender_id=None):
pass
discord = DummyDiscord()
MAP_OVERRIDE = deque(maxlen=16)
ghost_update_freq = 3
@@ -503,7 +512,6 @@ def is_state_new_for(peer_player_state, player_id):
class UDPHandler(socketserver.BaseRequestHandler):
def handle(self):
global discord
data = self.request[0]
socket = self.request[1]
recv = udp_node_msgs_pb2.ClientToServer()
@@ -533,7 +541,7 @@ class UDPHandler(socketserver.BaseRequestHandler):
#Update player online state
if state.roadTime:
if (not player_id in online.keys()) and ('discord' in globals()):
if (not player_id in online.keys()):
discord.send_message('%s riders online' % (len(online) + 1))
online[player_id] = state
@@ -697,13 +705,4 @@ botthreadevent = threading.Event()
bot = threading.Thread(target=play_bots)
bot.start()
if os.path.isfile(DISCORD_CONFIG_FILE):
from discord_bot import DiscordThread
discord = DiscordThread(DISCORD_CONFIG_FILE)
else:
class DummyDiscord():
def send_message(self, msg, sender_id=None):
pass
discord = DummyDiscord()
zwift_offline.run_standalone(online, global_pace_partners, global_bots, global_ghosts, ghosts_enabled, save_ghost, player_update_queue, discord)
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -114,7 +114,7 @@ def sync(user, password):
access_token, refresh_token = login(session, user, password)
events = get_gameinfo(session, access_token).decode('utf-8')
with open('game_info.json', 'wb') as f:
with open('game_info.txt', 'wb') as f:
f.write(events.encode('utf-8-sig'))
logout(session, refresh_token)
+1 -1
View File
@@ -75,7 +75,7 @@ if True:
"runTimeHalfMarathonInSeconds": jsv0(profile, 'run_time_half_marathon_in_seconds'), "runTimeFullMarathonInSeconds": jsv0(profile, 'run_time_full_marathon_in_seconds'), "totalInKomJersey": jsv0(profile, 'total_in_kom_jersey'), "totalInSprintersJersey": jsv0(profile, 'total_in_sprinters_jersey'),
"totalInOrangeJersey": jsv0(profile, 'total_in_orange_jersey'), "currentActivityId": jsf(profile, 'current_activity_id'), "enrolledZwiftAcademy": jsv0(profile, 'enrolled_program') == profile.EnrolledProgram.ZWIFT_ACADEMY, "runAchievementLevel": jsv0(profile, 'run_achievement_level'),
"totalRunDistance": jsv0(profile, 'total_run_distance'), "totalRunTimeInMinutes": jsv0(profile, 'total_run_time_in_minutes'), "totalRunExperiencePoints": jsv0(profile, 'total_run_experience_points'), "totalRunCalories": jsv0(profile, 'total_run_calories'), "totalGold": jsv0(profile, 'total_gold_drops'),
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": False, "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": jsb0(profile, 'strava_premium'), "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
"createdOn":"2021-09-19T13:24:17.783+0000", "likelyInGame": False, "address": None, "bt":"f97803d3-efac-4510-a17a-ef44e65d3071", "numberOfFolloweesInCommon": 0, "fundraiserId": None, "source": "Android", "origin": None, "licenseNumber": None, "bigCommerceId": None, "marketingConsent": None, "affiliate": None,
"avantlinkId": None, "virtualBikeModel": bikeFrameToStr(profile.bike_frame), "connectedToWithings": jsb0(profile, 'connected_to_withings'), "connectedToRuntastic": jsb0(profile, 'connected_to_runtastic'), "connectedToZwiftPower": False, "powerSourceType": "Power Source", "powerSourceModel": powerSourceModelToStr(profile.power_source_model), "riding": False, "location": "", "publicId": "5a72e9b1-239f-435e-8757-af9467336b40",
"mixpanelDistinctId": "21304417-af2d-4c9b-8543-8ba7c0500e84"}
+4 -4
View File
@@ -1032,7 +1032,7 @@ def relay_race_event_starting_line_id(event_id):
@app.route('/api/zfiles', methods=['POST'])
def api_zfiles():
# Don't care about zfiles, but shuts up some errors in Zwift log.
zfile = zfiles_pb2.ZFile()
zfile = zfiles_pb2.ZFileProto()
zfile.id = int(random.getrandbits(31))
zfile.folder = "logfiles"
zfile.filename = "yep_took_good_care_of_that_file.txt"
@@ -1201,7 +1201,7 @@ def do_api_profiles_me(is_json):
"runTimeHalfMarathonInSeconds": jsv0(profile, 'run_time_half_marathon_in_seconds'), "runTimeFullMarathonInSeconds": jsv0(profile, 'run_time_full_marathon_in_seconds'), "totalInKomJersey": jsv0(profile, 'total_in_kom_jersey'), "totalInSprintersJersey": jsv0(profile, 'total_in_sprinters_jersey'),
"totalInOrangeJersey": jsv0(profile, 'total_in_orange_jersey'), "currentActivityId": jsf(profile, 'current_activity_id'), "enrolledZwiftAcademy": jsv0(profile, 'enrolled_program') == profile.EnrolledProgram.ZWIFT_ACADEMY, "runAchievementLevel": jsv0(profile, 'run_achievement_level'),
"totalRunDistance": jsv0(profile, 'total_run_distance'), "totalRunTimeInMinutes": jsv0(profile, 'total_run_time_in_minutes'), "totalRunExperiencePoints": jsv0(profile, 'total_run_experience_points'), "totalRunCalories": jsv0(profile, 'total_run_calories'), "totalGold": jsv0(profile, 'total_gold_drops'),
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": False, "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
"profilePropertyChanges": jprofileFull.get('propertyChanges'), "cyclingOrganization": jsf(profile, 'cycling_organization'), "userAgent": "CNL/3.13.0 (Android 11) zwift/1.0.85684 curl/7.78.0-DEV", "stravaPremium": jsb0(profile, 'strava_premium'), "profileChanges": False, "launchedGameClient": "09/19/2021 13:24:19 +0000",
"createdOn":"2021-09-19T13:24:17.783+0000", "likelyInGame": False, "address": None, "bt":"f97803d3-efac-4510-a17a-ef44e65d3071", "numberOfFolloweesInCommon": 0, "fundraiserId": None, "source": "Android", "origin": None, "licenseNumber": None, "bigCommerceId": None, "marketingConsent": None, "affiliate": None,
"avantlinkId": None, "virtualBikeModel": bikeFrameToStr(profile.bike_frame), "connectedToWithings": jsb0(profile, 'connected_to_withings'), "connectedToRuntastic": jsb0(profile, 'connected_to_runtastic'), "connectedToZwiftPower": False, "powerSourceType": "Power Source", "powerSourceModel": powerSourceModelToStr(profile.power_source_model), "riding": False, "location": "", "publicId": "5a72e9b1-239f-435e-8757-af9467336b40",
"mixpanelDistinctId": "21304417-af2d-4c9b-8543-8ba7c0500e84"}
@@ -2444,9 +2444,9 @@ def experimentation_v1_variant():
('game_1_20_clickable_telemetry_box', True, None),
('game_1_20_0_enable_stages_steering', None, False),
('game_1_21_0_hud_highlighter', None, None),
('game_1_21_default_activity_name_change', None, None),
('game_1_21_default_activity_name_change', 1, None),
('game_1_21_android_novus_ble_refactor', None, None),
('game_1_21_0_gpu_deprecation_warning_message', None, None),
('game_1_21_0_gpu_deprecation_warning_message', 1, None),
('game_1_21_ftms_set_rider_weight', None, None),
('game_1_21_ble_dll_v2', None, None),
('game_1_22_allow_uturns_at_low_speed', None, None),