from obsws_python import ObsWS, EventSubscription
from obsws_python.event import CurrentProgramSceneChanged
import pyautogui
import time

host = "localhost"
port = 4455
password = "chello1290"

scene_map = {
    "Cam MultiSwitch": "OBS Camera MultiSwitch PGM",
    "Audience ke ProPresenter": "OBS ProPresenter Audience",
    "LiveStream ke ProPresenter": "OBS ProPresenter LiveStream"
}

def set_program_name(name):
    print(f"[+] Mengganti nama ke: {name}")
    obs_window = None
    for w in pyautogui.getWindowsWithTitle("OBS Studio"):
        if not w.isActive:
            w.activate()
            time.sleep(0.5)
        obs_window = w
        break
    if not obs_window:
        print("[-] OBS Studio tidak ditemukan.")
        return

    pyautogui.hotkey('alt', 't')      # Buka menu Tools
    time.sleep(0.5)
    pyautogui.press('down')           # Arah ke DistroAV
    time.sleep(0.2)
    pyautogui.press('enter')          # Buka DistroAV Settings
    time.sleep(1.2)
    pyautogui.press('tab', presses=2, interval=0.2)
    pyautogui.hotkey('ctrl', 'a')
    pyautogui.write(name)
    pyautogui.press('enter')

def on_event(event):
    if isinstance(event, CurrentProgramSceneChanged):
        scene_name = event.scene_name
        new_name = scene_map.get(scene_name, f"OBS PGM [{scene_name}]")
        set_program_name(new_name)

def main():
    ws = ObsWS(host, port, password, EventSubscription.All)
    ws.connect()
    ws.register_event_callback(on_event)
    print("[*] Menunggu perubahan scene OBS...")
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print("[x] Dihentikan.")
        ws.disconnect()

if __name__ == "__main__":
    main()
