Парсим данные с Teamspeak 3 сервера. Python.

3107 0

    Python connect teamspeak 3 server
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) -> TeamSpeak 3 Server Query Manual. Например запросим информацию об определенном канале на сервере. В моем случае это канал с названием "=MARS=" и cid=68

    >>> 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()

    Ну а дальше полученную информацию используем так и там где нам надо.

Комментарии

Контактные данные

 Россия, г. Москва