add subs intenum to baseclient

expand events example
This commit is contained in:
onyx-and-iris 2022-07-26 04:36:55 +01:00
parent 82ddbacd7d
commit c8f2b6419d
2 changed files with 46 additions and 5 deletions

View File

@ -5,17 +5,30 @@ class Observer:
def __init__(self, cl):
self._cl = cl
self._cl.callback.register(
[self.on_current_program_scene_changed, self.on_exit_started]
[
self.on_current_program_scene_changed,
self.on_scene_created,
self.on_input_mute_state_changed,
self.on_exit_started,
]
)
print(f"Registered events: {self._cl.callback.get()}")
def on_current_program_scene_changed(self, data):
print(f"Switched to scene {data['sceneName']}")
def on_scene_created(self, event, data):
"""A new scene has been created."""
print(f"{event}: {data}")
def on_input_mute_state_changed(self, event, data):
"""An input's mute state has changed."""
print(f"{event}: {data}")
def on_exit_started(self):
print(f"OBS closing!")
self._cl.unsubscribe()
def on_current_program_scene_changed(self, data):
print(f"Switched to scene {data['sceneName']}")
if __name__ == "__main__":
cl = obs.EventsClient()

View File

@ -1,12 +1,19 @@
import base64
import hashlib
import json
from enum import IntEnum
from pathlib import Path
from random import randint
import tomllib
import websocket
Subs = IntEnum(
"Subs",
"general config scenes inputs transitions filters outputs sceneitems mediainputs vendors ui",
start=0,
)
class ObsClient(object):
def __init__(self, **kwargs):
@ -49,7 +56,28 @@ class ObsClient(object):
).digest()
).decode()
payload = {"op": 1, "d": {"rpcVersion": 1, "authentication": auth}}
all_non_high_volume = (
(1 << Subs.general)
| (1 << Subs.config)
| (1 << Subs.scenes)
| (1 << Subs.inputs)
| (1 << Subs.transitions)
| (1 << Subs.filters)
| (1 << Subs.outputs)
| (1 << Subs.sceneitems)
| (1 << Subs.mediainputs)
| (1 << Subs.vendors)
| (1 << Subs.ui)
)
payload = {
"op": 1,
"d": {
"rpcVersion": 1,
"authentication": auth,
"eventSubscriptions": (all_non_high_volume),
},
}
self.ws.send(json.dumps(payload))
return self.ws.recv()