-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
106 lines (87 loc) · 3.24 KB
/
main.py
File metadata and controls
106 lines (87 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from obswebsocket import obsws, requests, exceptions, events
from obswebsocket.base_classes import Baserequests
import websocket
import logging
import time
# cambiar
config = {
"PASSWORD_SERVIDOR_WS_OBS": "12345", # Contraseña configuracion del servidor websocket
"IP_SERVIDOR_WS_OBS": "localhost",
"PUERTO_SERVIDOR_WS_OBS": 4444,
"escena1": "nombreEscena1",
"escena2": "nombreEscena2",
"escena3": "nombreEscena3"
}
def checkings(indexNextScene, listScenes, nameCurrentScene):
# introducido un digito mayor al listado de escenas
if indexNextScene > len(listScenes):
logging.info("Digito mayor al numero de escenas")
return False
# digito inferiro a 0
if indexNextScene < 0:
logging.info("Digito inferior a 0")
return False
# escena actual
if listScenes[indexNextScene]["name"] == nameCurrentScene:
return False
return True
def showMenu(listScenes, nameCurrentScene):
menuText: list = [ "\n" ]
for i in range(0, len(listScenes)):
currentName = listScenes[i]["name"]
if (currentName == nameCurrentScene):
menuText.append("\n{}) {} <<< Actual".format(i + 1, currentName ) )
else:
menuText.append("\n{}) {}".format(i + 1, currentName ) )
menuText.append("\n\n0) Salir\n\nElige pantalla cambiar: ")
menuText = "".join(menuText)
return menuText
def main():
clientWs = obsws(
config["IP_SERVIDOR_WS_OBS"],
config["PUERTO_SERVIDOR_WS_OBS"],
config["PASSWORD_SERVIDOR_WS_OBS"]
)
salir = False
while salir == False:
try:
if clientWs.ws == None or clientWs.ws.connected == False:
clientWs.connect()
# informacion general de las escenas
scenes: Baserequests = clientWs.call(requests.GetSceneList())
# listado de las escenas
listScenes = scenes.getScenes()
# nombre escena actual
nameCurrentScene = scenes.datain["current-scene"]
# mostramos el menu
menuText = showMenu(listScenes, nameCurrentScene)
# input
rawInput: str = input(menuText)
# comprobacion si es un digito
if str.isdigit(rawInput) == False:
continue
# index de la escena a cambiar
indexNextScene = int(rawInput) - 1
# salir
if indexNextScene == -1:
salir = True
clientWs.disconnect()
break
# comprobaciones digitos
if checkings(indexNextScene, listScenes, nameCurrentScene) == False:
continue
# cambio de escena
clientWs.call(requests.SetCurrentScene(listScenes[indexNextScene]["name"]))
# excepciones
except exceptions.ConnectionFailure:
logging.error("Fallo conexion. ¿Contraseña Mal? / ¿No iniciado OBS? / ¿Reconexion?")
time.sleep(2)
except websocket.WebSocketConnectionClosedException:
logging.error("OBS Ha Desconectado")
time.sleep(2)
except ValueError:
logging.error("Caracter no permitido")
if __name__ == '__main__':
main()