Hallo Forum,

ich bräuchte da einmal eure Hilfe bei einem Problem, für welches mir akutell kein Lösungsansatz einfällt.

Ich habe ein Python Skript geschrieben, welches sich über Telnet mit dem TS-Client auf demselben PC verbindet und verschiedene Befehle ausführen können soll. Im Beispiel wäre dies, den Client zu muten. Das Problem dabei ist, dass der Client sich in der aktuellen Form zuerst verbindet, dann Authentifiziert, 20ms schläft*, den Mute Befehl scheibt und die Verbindung beendet. Dieser Vorgang dauert in Summe knapp über 2 Sekunden. Dabei geht mit abstand die meiste Zeit für das Authentifizieren drauf. Allerdings bricht die Verbindung nach einiger Zeit ab, weshalb ich nicht einfach nur einmal die Verbindung öffnen und dann unberührt lassen kann.

Ziel des Vorhabens ist es, das Python Programm später in C++ oder Javascript umzuschreiben und in eine Application fürs Elgato Streamdeck einzubinden. Aktuell nutze ich für verschiedene TS-Funktionen (Muten, entmuten, ...) Hotkeyskombinationen, welche ich im Streamdeck ebenfalls eingebunden habe, würde aber gerne einen direkten Weg gehen. Vor allem weil manche Tasten in manchen Spielen ebenfalls belegt sind und so bei jedem Hotkey-press eine Aktion im Spiel ausgeführt wird.

Hat da jemand von euch eine Idee? Und ist der Weg über das Telnet Plugin allgemein der richtige Weg?


Viele Grüße

JalicX

* delay fürs Authentifizieren, sonst wird der Telnet.write Befehl nicht ausgeführt


Erwähntes Python Skript:

Code:
#Python Telnet Mute-Programm

import telnetlib
import time

host = "localhost"
port = 25639
apiKey = "XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"


starttime = time.time();
print("Zeit Start        : "+str(starttime));	
print("--------------------------------");

#connect
myTN = telnetlib.Telnet(host,port);
myTN.write(("auth apikey=" + apiKey+"\r\n").encode('ascii'));
time.sleep(0.02);

midtime = time.time();
print("Zeit Mid          : "+str(midtime));
print("Diff Start - Mid  : "+str(midtime-starttime))
print("--------------------------------");

#Call Mute
myTN.write("clientupdate client_input_muted=1\r\n".encode('ascii'));

endTime = time.time();
print("Zeit End          : "+str(endTime));
print("Diff Mid - End    : "+str(endTime-midtime));
print("Diff Start - End  : " + str(endTime-starttime));

#Final Disconnect
myTN.close()