diff --git a/obs_scene_switcher.py b/obs_scene_switcher.py new file mode 100644 index 0000000..148a8f0 --- /dev/null +++ b/obs_scene_switcher.py @@ -0,0 +1,36 @@ +from http.server import HTTPServer, BaseHTTPRequestHandler +from urllib.parse import urlparse, parse_qs +import threading +import obspython as obs + +def set_current_scene(scene_name): + scenes = obs.obs_frontend_get_scenes() + for scene in scenes: + name = obs.obs_source_get_name(scene) + if name == scene_name: + obs.obs_frontend_set_current_scene(scene) + return 0 + return 1 + +class RqstHandler(BaseHTTPRequestHandler): + + def do_GET(self): + up = urlparse(self.path) + if up.path == '/Scene': + qc = parse_qs(up.query) + set_current_scene(qc.get('name', [''])[0]) + self.send_response(200) + self.end_headers() + elif up.path == '/ping': + self.send_response(200) + self.end_headers() + + def log_message(self, format, *args): + pass + +def run(name): + httpd = HTTPServer(('127.0.0.1', 9302), RqstHandler) + httpd.serve_forever() + +t = threading.Thread(target=run, args=(1,), daemon=True) +t.start()