examples refactored

This commit is contained in:
onyx-and-iris 2023-07-19 15:13:26 +01:00
parent 153f35e742
commit 73ae24eb4b
9 changed files with 66 additions and 50 deletions

View File

@ -5,5 +5,3 @@ source "https://rubygems.org"
# gem "rails"
gem "obsws", path: "../.."
gem "perfect_toml", "~> 0.9.0"

View File

@ -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

View File

@ -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__

7
examples/levels/Gemfile Normal file
View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
source "https://rubygems.org"
# gem "rails"
gem "obsws", path: "../.."

View File

@ -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

View File

@ -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 <Enter> 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 <Enter> to quit"
loop { exit if gets.chomp.empty? }
end
main if $0 == __FILE__
Main.new(**conn_from_yaml).run if $0 == __FILE__

View File

@ -5,5 +5,3 @@ source "https://rubygems.org"
# gem "rails"
gem "obsws", path: "../.."
gem "perfect_toml", "~> 0.9.0"

View File

@ -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

View File

@ -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