Teamspeak 3 сервер предоставляет нам довольно обширные возможности. Одна из них это получение информации с сервера (а при наличии админских прав и управление) через порт запросов.
Как получить эту информацию с помощью Python?
Как всегда ничего сложного. Итак начнем.
1. Запускаем наш Python
2. Подключаем socket
>>> import socket
3. Создаем socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
4. Коннектимся к TS3 серверу
>>> s.connect(('<ip address>', <Query port. Default=10011>))
5. Выбираем виртуальный сервер TS3. Их может быть несколько.
>>> s.send('use sid=1')
<Сервер ответит кодом. У меня приходит 9 в случае нормального подключения>
6. Ну а далее запрашиваем от TS3 сервера то что нам надо. Список возможных команд можно почерпнуть из документации (pdf) ->
>>> s.send('channelinfo cid=68\n')
Сервер ответит кодом. В моем случае это было 19
7. Теперь остается только получить запрошенную информацию
>>> s.recv(1024)
В ответ получим что-то подобное:
'pid=35 channel_name==MARS= channel_topic channel_description=[center][color=red][b]\xd0\x9a\xd0\xbb\xd0\xb0\xd0\xbd\\s=MARS=[\\/b][\\/color]\\n\\n[url=http:\\/\\/bf2team.clan.su\\/]bf2team.clan.su[\\/url]\\n[\\/center] channel_password=NlxcR3CpNJd63KtDzl3UiWQwimA= channel_codec=2 channel_codec_quality=7 channel_maxclients=32 channel_maxfamilyclients=-1 channel_order=64 channel_flag_permanent=1 channel_flag_semi_permanent=0 channel_flag_default=0 channel_flag_password=1 channel_codec_latency_factor=1 channel_codec_is_unencrypted=1 channel_flag_maxclients_unlimited=0 channel_flag_maxfamilyclients_unlimited=0 channel_flag_maxfamilyclients_inherited=1 channel_filepath=files\\/virtualserver_1\\/channel_68 channel_needed_talk_power=0 channel_forced_silence=0 channel_name_phonetic channel_icon_id=0\n\rerror id=0 msg=ok\n\r'
8. Данные мы получили, осталось только закрыть соединение
>>> s.close()
Ну а дальше полученную информацию используем так и там где нам надо.
Комментарии