require_relative "../../lib/obsws" require "yaml" class Main def initialize(**kwargs) @r_client = OBSWS::Requests::Client.new(**kwargs) @e_client = OBSWS::Events::Client.new(**kwargs) @e_client.on(:current_program_scene_changed) do |data| puts "Switched to scene #{data.scene_name}" end @e_client.on(:scene_created) do |data| puts "scene #{data.scene_name} has been created" end @e_client.on(:input_mute_state_changed) do |data| puts "#{data.input_name} mute toggled" end @e_client.on(:exit_started) do puts "OBS closing!" @r_client.close @e_client.close @running = false end puts infostring end def infostring resp = @r_client.get_version [ "Using obs version: #{resp.obs_version}.", "With websocket version: #{resp.obs_web_socket_version}" ].join(" ") end def run @running = true sleep(0.1) while @running end end def conn_from_yaml YAML.load_file("obs.yml", symbolize_names: true)[:connection] end Main.new(**conn_from_yaml).run if $PROGRAM_NAME == __FILE__