def update_info(self): a2s = valve.source.a2s.ServerQuerier((self.host, self.port)) try: info = a2s.get_info() self.up = True self.save() except valve.source.a2s.NoResponseError: self.up = False self.save() return False info_model = Info(server=self) info_model.server_name = info['server_name'] info_model.map = info['map'] info_model.folder = info['folder'] info_model.game = info['game'] info_model.app_id = info['app_id'] info_model.player_count = info['player_count'] info_model.max_players = info['max_players'] info_model.bot_count = info['bot_count'] info_model.server_type = info['server_type'].value info_model.platform = info['platform'].value info_model.password_protected = info['password_protected'] info_model.vac_enabled = info['vac_enabled'] info_model.version = info['version'] info_model.save() return True
def test_dota2_info(address): try: a2s = valve.source.a2s.ServerQuerier(address) info = a2s.get_info() except valve.source.a2s.NoResponseError: return assert info["app_id"] == 570 assert info["folder"] == "dota" assert isinstance(info["folder"], unicode)
def test_tf2_info(address): try: a2s = valve.source.a2s.ServerQuerier(address) info = a2s.get_info() except valve.source.a2s.NoResponseError: pytest.skip("Timedout waiting for response") assert info["app_id"] == 440 assert info["folder"] == "tf" assert isinstance(info["folder"], unicode)
def test_csgo_info(address): try: a2s = valve.source.a2s.ServerQuerier(address) info = a2s.get_info() except valve.source.a2s.NoResponseError: return assert info["app_id"] == 730 assert info["folder"] == "csgo" assert isinstance(info["folder"], six.text_type)
def get_sv_info(self, server): addr = server.split(":") address = (addr[0], int(addr[1])) a2s = valve.source.a2s.ServerQuerier(address) try: info = a2s.get_info() rules = a2s.get_rules() except valve.source.a2s.NoResponseError: return None return (info, rules)
def get_server(self): for server in self.servers: temp = server.split(":") address = (temp[0], int(temp[1])) a2s = valve.source.a2s.ServerQuerier(address) try: info = a2s.get_info() rules = a2s.get_rules() except valve.source.a2s.NoResponseError: continue slots = info["max_players"] - info["player_count"] game_state = rules["rules"]["g_gameState"] pickup_state = self.get_pickup_server_state(server) print(info["server_name"] + server) if game_state == 'PRE_GAME' and pickup_state == 'FREE': return (info["server_name"], server) return None