forked from chepecarlos/ElGarrobo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOBSWebSocketPropio.py
94 lines (78 loc) · 3.3 KB
/
OBSWebSocketPropio.py
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
from obswebsocket import obsws, requests, events
def on_event(message):
# Evento interesante SceneItemVisibilityChanged
print()
if(message.name == 'RecordingStopped'):
print('Se paro la grabacion')
elif(message.name == 'RecordingStarted'):
print('Se Inicio la grabacion')
elif(message.name == 'SourceMuteStateChanged'):
print(f"[Evento] - Sonido de {message.datain['sourceName']} - {message.datain['muted']}")
elif(message.name == 'SourceFilterVisibilityChanged'):
print(f"[Evento] Filtro {message.datain['filterName']} de {message.datain['sourceName']} - {message.datain['filterEnabled']}")
else:
print(f"Mensaje OBS-WebSocket: {message}")
def on_switch(message):
#TODO Usar info de esena para mostar en ElGato
print(f"Cambiante de pantalla {message.getSceneName()}")
class MiObsWS:
def __init__(self):
self.host = "localhost"
self.port = 4444
self.OBSConectado = False
def CambiarHost(self, host_):
self.host = host_;
def RegistarCambioEsena(self, LaFuncion):
self.ConeccionOBS.register(LaFuncion, events.SwitchScenes)
def RegistarEvento(self, LaFuncion):
self.ConeccionOBS.register(LaFuncion)
def Conectar(self):
try:
print(f"Intentando Conectar con {self.host}")
self.ConeccionOBS = obsws(self.host, self.port)
# self.ConeccionOBS.register(on_event)
# self.ConeccionOBS.register(on_switch, events.SwitchScenes)
self.ConeccionOBS.connect()
self.OBSConectado = True
except :
print("No se pudo conectar a OBS")
self.OBSConectado = False
def CambiarGrabacion(self):
if self.OBSConectado:
print("Cambiando estado Grabacion")
self.ConeccionOBS.call(requests.StartStopRecording())
else:
print("No se encontro OBS")
def CambiarStriming(self):
if self.OBSConectado:
print("Cambiando estado Striming")
self.ConeccionOBS.call(requests.StartStopStreaming())
else:
print("No se encontro OBS")
def CambiarEsena(self, Esena):
if self.OBSConectado:
print("Cambiando a {}".format(Esena))
self.ConeccionOBS.call(requests.SetCurrentScene(Esena))
else:
print("No se encontro OBS")
# def Prueva(self, dato):
# dato['Comando'][4]['Key'][0]['Estado'] = True
def CambiarVolumen(self, Fuente):
if self.OBSConectado:
print("Cambiando estado Volumen {}".format(Fuente))
self.ConeccionOBS.call(requests.ToggleMute(Fuente))
else:
print("No se encontro OBS")
def CambiarFiltro(self, Fuente, Filtro, Estado):
if self.OBSConectado:
print(f"Cambiando del Filtro {Filtro} de {Fuente} a {not Estado}")
self.ConeccionOBS.call(requests.SetSourceFilterVisibility(Fuente, Filtro, not Estado))
else:
print("No se encontro OBS")
def CambiarFuente(self, Fuente, Estado):
print(f"Cambiando Fuente {Fuente} - {Estado}")
self.ConeccionOBS.call(requests.SetSceneItemProperties(Fuente, visible = Estado))
def Cerrar(self):
if self.OBSConectado:
print("Cerrando OBS")
self.ConeccionOBS.disconnect()