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

一直都很想自己实现对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皮肤的磨损了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容