@ArthesDark

Как получить информацию сервера с помощью библиотеки python-valve?

Хочу получить информацию о сервере, но когда пытаюсь вывести информацию, допустим имя сервера
Код:
from valve.source.a2s import *

ip_address = "37.18.21.235"
port = "27022"

with ServerQuerier(ip_address, port) as server:
    print(server.info()["server_name"])
Но получаю ошибку:
File "g:/programming/Python/Parser Steam/parser2.py", line 7, in <module>
    print(server.info()["server_name"])
TypeError: an integer is required (got type str)

Помогите пожалуйста
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 3
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Надо смотреть, какой тип возвращает метод .info()
Возможно, это список, строка или другую подобную структуру. Тогда оно ждет не ключ, а порядковый номер.
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
Так написано, ожидается число (получена строка)

Порт числом должен быть
Ответ написан
retUrn3d
@retUrn3d
Пользователь, просто пользователь...
Нужно хоть раз в этой жизни открыть документацию. А не пытаться познавать пакет методом тыка.
ServerQuerier ждет от вас что вы передадите ему аргумент address в виде кортежа('ip', port).

from valve.source.a2s import *

address = ('212.22.85.2', 27015)

with ServerQuerier(address, timeout=5.0) as server:
    print(server.info()["server_name"])

>> PostBellum HL2 RP | Русский Half-Life 2 Roleplay


Это работает с другим сервером, хотя с тем что указано у вас, выскочит ошибка, решение которой можно поискать тут. Но это уже совсем другой вопрос.

Хотя в мире существует классный прекрасный pip install python-a2s более свежий и более легковесный пакет для этих целей.

import a2s

address = ('37.18.21.235', 27022)
print(a2s.info(address, timeout=4))


И работает он без тех самых непонятных ошибок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы