From 73ae24eb4be4094e048ffedb7f60d452b858a936 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Wed, 19 Jul 2023 15:13:26 +0100 Subject: [PATCH] examples refactored --- examples/events/Gemfile | 2 -- examples/events/Gemfile.lock | 4 +--- examples/events/main.rb | 20 ++++++++--------- examples/levels/Gemfile | 7 ++++++ examples/levels/Gemfile.lock | 25 +++++++++++++++++++++ examples/levels/main.rb | 35 +++++++++++++----------------- examples/scene_rotate/Gemfile | 2 -- examples/scene_rotate/Gemfile.lock | 4 +--- examples/scene_rotate/main.rb | 17 +++++++-------- 9 files changed, 66 insertions(+), 50 deletions(-) create mode 100644 examples/levels/Gemfile create mode 100644 examples/levels/Gemfile.lock diff --git a/examples/events/Gemfile b/examples/events/Gemfile index 0950401..6c9573f 100644 --- a/examples/events/Gemfile +++ b/examples/events/Gemfile @@ -5,5 +5,3 @@ source "https://rubygems.org" # gem "rails" gem "obsws", path: "../.." - -gem "perfect_toml", "~> 0.9.0" diff --git a/examples/events/Gemfile.lock b/examples/events/Gemfile.lock index e26995e..597af39 100644 --- a/examples/events/Gemfile.lock +++ b/examples/events/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: ../.. specs: - obsws (0.1.0) + obsws (0.1.3) observer (~> 0.1.1) waitutil (~> 0.2.1) websocket-driver (~> 0.7.5) @@ -10,7 +10,6 @@ GEM remote: https://rubygems.org/ specs: observer (0.1.1) - perfect_toml (0.9.0) waitutil (0.2.1) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) @@ -21,7 +20,6 @@ PLATFORMS DEPENDENCIES obsws! - perfect_toml (~> 0.9.0) BUNDLED WITH 2.3.22 diff --git a/examples/events/main.rb b/examples/events/main.rb index 352e502..ab71bb6 100644 --- a/examples/events/main.rb +++ b/examples/events/main.rb @@ -1,9 +1,9 @@ require "obsws" -require "perfect_toml" +require "yaml" OBSWS::LOGGER.info! -class Observer +class Main attr_reader :running def initialize(**kwargs) @@ -15,6 +15,10 @@ class Observer @running = true end + def run + sleep(0.1) while running + end + def info resp = @r_client.get_version [ @@ -45,14 +49,8 @@ class Observer end end -def conn_from_toml - PerfectTOML.load_file("obs.toml", symbolize_names: true)[:connection] +def conn_from_yaml + YAML.load_file("obs.yml", symbolize_names: true)[:connection] end -def main - o = Observer.new(**conn_from_toml) - - sleep(0.1) while o.running -end - -main if $0 == __FILE__ +Main.new(**conn_from_yaml).run if $0 == __FILE__ diff --git a/examples/levels/Gemfile b/examples/levels/Gemfile new file mode 100644 index 0000000..6c9573f --- /dev/null +++ b/examples/levels/Gemfile @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +# gem "rails" + +gem "obsws", path: "../.." diff --git a/examples/levels/Gemfile.lock b/examples/levels/Gemfile.lock new file mode 100644 index 0000000..e7af631 --- /dev/null +++ b/examples/levels/Gemfile.lock @@ -0,0 +1,25 @@ +PATH + remote: ../.. + specs: + obsws (0.1.3) + observer (~> 0.1.1) + waitutil (~> 0.2.1) + websocket-driver (~> 0.7.5) + +GEM + remote: https://rubygems.org/ + specs: + observer (0.1.1) + waitutil (0.2.1) + websocket-driver (0.7.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + +PLATFORMS + x64-mingw-ucrt + +DEPENDENCIES + obsws! + +BUNDLED WITH + 2.4.15 diff --git a/examples/levels/main.rb b/examples/levels/main.rb index 0df9eb5..189254a 100644 --- a/examples/levels/main.rb +++ b/examples/levels/main.rb @@ -1,5 +1,5 @@ require "obsws" -require "perfect_toml" +require "yaml" OBSWS::LOGGER.info! DEVICE = "Desktop Audio" @@ -10,44 +10,39 @@ module LevelTypes PREFADER = 2 end -class Observer - attr_reader :running - +class Main def initialize(**kwargs) - kwargs[:subs] = OBSWS::Events::SUBS::LOW_VOLUME | OBSWS::Events::SUBS::INPUTVOLUMEMETERS - @e_client = OBSWS::Events::Client.new(**kwargs) + subs = OBSWS::Events::SUBS::LOW_VOLUME | OBSWS::Events::SUBS::INPUTVOLUMEMETERS + @e_client = OBSWS::Events::Client.new(subs:, **kwargs) @e_client.add_observer(self) end - + + def run + puts "press to quit" + exit if gets.chomp.empty? + end + def on_input_mute_state_changed(data) - """An input's mute state has changed.""" if data.input_name == DEVICE puts "#{DEVICE} mute toggled" end end def on_input_volume_meters(data) - def fget(x) = x > 0 ? (20 * Math.log(x, 10)).round(1) : -200.0 + fget = ->(x) { (x > 0) ? (20 * Math.log(x, 10)).round(1) : -200.0 } data.inputs.each do |d| name = d[:inputName] if name == DEVICE && !d[:inputLevelsMul].empty? left, right = d[:inputLevelsMul] - puts "#{name} [L: #{fget(left[LevelTypes::POSTFADER])}, R: #{fget(right[LevelTypes::POSTFADER])}]" + puts "#{name} [L: #{fget.call(left[LevelTypes::POSTFADER])}, R: #{fget.call(right[LevelTypes::POSTFADER])}]" end end end end -def conn_from_toml - PerfectTOML.load_file("obs.toml", symbolize_names: true)[:connection] +def conn_from_yaml + YAML.load_file("obs.yml", symbolize_names: true)[:connection] end -def main - o = Observer.new(**conn_from_toml) - - puts "press to quit" - loop { exit if gets.chomp.empty? } -end - -main if $0 == __FILE__ +Main.new(**conn_from_yaml).run if $0 == __FILE__ diff --git a/examples/scene_rotate/Gemfile b/examples/scene_rotate/Gemfile index 0950401..6c9573f 100644 --- a/examples/scene_rotate/Gemfile +++ b/examples/scene_rotate/Gemfile @@ -5,5 +5,3 @@ source "https://rubygems.org" # gem "rails" gem "obsws", path: "../.." - -gem "perfect_toml", "~> 0.9.0" diff --git a/examples/scene_rotate/Gemfile.lock b/examples/scene_rotate/Gemfile.lock index e26995e..597af39 100644 --- a/examples/scene_rotate/Gemfile.lock +++ b/examples/scene_rotate/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: ../.. specs: - obsws (0.1.0) + obsws (0.1.3) observer (~> 0.1.1) waitutil (~> 0.2.1) websocket-driver (~> 0.7.5) @@ -10,7 +10,6 @@ GEM remote: https://rubygems.org/ specs: observer (0.1.1) - perfect_toml (0.9.0) waitutil (0.2.1) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) @@ -21,7 +20,6 @@ PLATFORMS DEPENDENCIES obsws! - perfect_toml (~> 0.9.0) BUNDLED WITH 2.3.22 diff --git a/examples/scene_rotate/main.rb b/examples/scene_rotate/main.rb index f308b26..a631015 100644 --- a/examples/scene_rotate/main.rb +++ b/examples/scene_rotate/main.rb @@ -1,19 +1,18 @@ require "obsws" -require "perfect_toml" +require "yaml" OBSWS::LOGGER.info! -def conn_from_toml - PerfectTOML.load_file("obs.toml", symbolize_names: true)[:connection] +def conn_from_yaml + YAML.load_file("obs.yml", symbolize_names: true)[:connection] end def main - r_client = OBSWS::Requests::Client.new(**conn_from_toml) - r_client.run do - resp = r_client.get_scene_list - resp.scenes.reverse.each do |s| - puts "Switching to scene #{s[:sceneName]}" - r_client.set_current_program_scene(s[:sceneName]) + OBSWS::Requests::Client.new(**conn_from_yaml).run do |client| + resp = client.get_scene_list + resp.scenes.reverse_each do |scene| + puts "Switching to scene #{scene[:sceneName]}" + client.set_current_program_scene(scene[:sceneName]) sleep(0.5) end end