csgo icon indicating copy to clipboard operation
csgo copied to clipboard

How can i decode information from RequestFullMatchInfo?

Open Soulbadguy54 opened this issue 3 years ago • 3 comments

Hello. Need help, please guys :) There are 2 questions that i dont understand.

  1. I use response = cs.wait_event('full_match_info', timeout=30, raises=False) for get the game data from user last match. But whats the format i getting on response? I tried to use str(response[0]) and next decode by json.loads(), but i get an json decode error. How can i decode this data to dict or something like that??? (wrote down)

  2. How the sites like csgostats.gg and other get the all info about match? like flashes, flash assists, jumpshots, the accuracy with AK-47, grenade damage etc. I can get only kill, assists, headshots and score (very little info) via cs.request_full_match_info(). Is it possible to get more data via that python module?

The response data i want to decode or something like that:

msgrequestid: 9147
accountid: 1185931041
servertime: 1614835709
matches {
  matchid: 3467736107796398755
  matchtime: 1614790460
  watchablematchinfo {
    server_ip: 181
    tv_port: 1806964191
    tv_spectators: 0
    cl_decryptdata_key_pub: 8411663965113195703
  }
  roundstatsall {
    reservation {
      account_ids: 325391327
      account_ids: 55022319
      account_ids: 199873381
      account_ids: 92583876
      account_ids: 97254842
      account_ids: 354762908
      account_ids: 138651512
      account_ids: 841090319
      account_ids: 183710739
      account_ids: 119649041
    }

etc

Soulbadguy54 avatar Mar 04 '21 05:03 Soulbadguy54

guys, please. Cant do anything without your help T_T

Soulbadguy54 avatar Mar 06 '21 11:03 Soulbadguy54

  1. You can easily decode the response by using the same library ValvePython uses to encode its responses.
from google.protobuf.json_format import MessageToDict

match_info = MessageToDict(response[0])
for match in match_info['matches']:
    for match_round in match['roundstatsall']:
        print(match_round)
  1. Sadly you won't get stats like csgostats from this. They use a similar methode to get the demo url from a sharecode, eg:
demo_url = game_info['matches'][0]['roundstatsall'][-1]['map']

then they download set demo an use their own parser, another public or the Valve made one to get all the information they want

Suppenbiatch avatar Mar 20 '21 22:03 Suppenbiatch

  1. You can easily decode the response by using the same library ValvePython uses to encode its responses.
from google.protobuf.json_format import MessageToDict

match_info = MessageToDict(response[0])
for match in match_info['matches']:
    for match_round in match['roundstatsall']:
        print(match_round)
  1. Sadly you won't get stats like csgostats from this. They use a similar methode to get the demo url from a sharecode, eg:
demo_url = game_info['matches'][0]['roundstatsall'][-1]['map']

then they download set demo an use their own parser, another public or the Valve made one to get all the information they want

Thx for your reply. Now i understand. But there is a new question. I know nothing about C, C# or C++. Is there any working python library for getting stats like csgostats get? I saw some frameworks, but its so outdated...

Soulbadguy54 avatar Mar 21 '21 04:03 Soulbadguy54