美文网首页
使用Python实现CSGO皮肤磨损查询

使用Python实现CSGO皮肤磨损查询

作者: Hardy_ | 来源:发表于2018-12-15 19:39 被阅读0次

一直都很想自己实现对CSGO中皮肤磨损的查询,花了不少功夫最近终于找到了相关的轮子
Valve官方对于CSGO磨损查询的说明很简洁,是使用的protobuf,但是从知道传输格式到实现还有很多东西要做,上GitHub搜了搜“csgo float”,发现已经有了很多可用的轮子,比如这个:CSGO-Item-Floats-From-Inspect-Links。但是很多实现都是用的其他语言,而我想要Python的版本,找了很久之后终于发现了一个神器:

Python's csgo library

Python's steam library

全面地实现了所有steam和CSGO的接口,只要稍加调用就可以实现查询磨损的功能,十分方便,下面是我使用这个库写的查询磨损的Python代码:

from steam import SteamClient
from csgo import CSGOClient
from csgo.enums import ECsgoGCMsg
import csgo
import re

# print out logs
import logging
logging.basicConfig(format='[%(asctime)s] %(levelname)s %(name)s: %(message)s', level=logging.DEBUG)

client = SteamClient()
cs = CSGOClient(client)
logger = {
   'username':'',
   'password':'',
}

@client.on('logged_on')
def start_csgo():
    cs.launch()

client.cli_login(**logger)
# client.run_forever()
# print(str(cs.account_id))

def get_param(inspect_link):
   inspect_params = {}
   re_s = re.search('S\d*',inspect_link)
   re_m = re.search('M\d*',inspect_link)
   re_a = re.search('A\d*',inspect_link)
   re_d = re.search('D\d*',inspect_link)
   param_m = ""
   param_s = ""
   param_a = re_a.group()[1:]
   inspect_params["param_a"] = int(param_a)
   param_d = re_d.group()[1:]
   inspect_params["param_d"] = int(param_d)
   if re_s:
      param_s = re_s.group()[1:]
      inspect_params["param_s"] = int(param_s)
      print("S:{}\nA:{}\nD:{}".format(param_s,param_a,param_d))
   elif re_m:
      param_m = re_m.group()[1:]
      inspect_params["param_m"] = int(param_m)
      print("M:{}\nA:{}\nD:{}".format(param_m,param_a,param_d))
   else:
      msg = "check if the link is correct"
      print(msg)
   return inspect_params

while(1):
   inspect_link = input("inspect link:")
   # inspect_link = "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198282463169A15145586192D16595344889481721483"
   inspect_params = get_param(inspect_link)
   cs.send(ECsgoGCMsg.EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest,inspect_params)
   response = cs.wait_event(ECsgoGCMsg.EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse, timeout=10)
   #player_profle = response.paintwear
   print(response)

登录之后就可以查询CSGO皮肤的磨损了。

相关文章

网友评论

      本文标题:使用Python实现CSGO皮肤磨损查询

      本文链接:https://www.haomeiwen.com/subject/mjwahqtx.html