import logging import obsws_python as obs import vban_cmd logging.basicConfig(level=logging.INFO) class Observer: def __init__(self, vban): self.vban = vban self.client = obs.EventClient() self.client.callback.register(self.on_current_program_scene_changed) def on_start(self): self.vban.strip[0].mute = True self.vban.strip[1].B1 = True self.vban.strip[2].B2 = True def on_brb(self): self.vban.strip[7].fadeto(0, 500) self.vban.bus[0].mute = True def on_end(self): self.vban.apply( { "strip-0": {"mute": True}, "strip-1": {"mute": True, "B1": False}, "strip-2": {"mute": True, "B1": False}, } ) def on_live(self): self.vban.strip[0].mute = False self.vban.strip[7].fadeto(-6, 500) self.vban.strip[7].A3 = True def on_current_program_scene_changed(self, data): def fget(scene): run = { "START": self.on_start, "BRB": self.on_brb, "END": self.on_end, "LIVE": self.on_live, } return run.get(scene) scene = data.scene_name print(f"Switched to scene {scene}") if fn := fget(scene): fn() def main(): with vban_cmd.api("potato", sync=True) as vban: obs = Observer(vban) while cmd := input(" to exit\n"): if not cmd: break if __name__ == "__main__": main()