mirror of
https://github.com/onyx-and-iris/obsws-ruby.git
synced 2025-04-19 10:53:45 +01:00
Compare commits
No commits in common. "e4f4961c561408d8570de803cfd3569ea5ec8ae5" and "155cbe019acea9c4684f92063676556c0c550ef5" have entirely different histories.
e4f4961c56
...
155cbe019a
@ -1,7 +1,7 @@
|
|||||||
PATH
|
PATH
|
||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
obsws (0.4.0)
|
obsws (0.3.3)
|
||||||
waitutil (~> 0.2.1)
|
waitutil (~> 0.2.1)
|
||||||
websocket-driver (~> 0.7.5)
|
websocket-driver (~> 0.7.5)
|
||||||
|
|
||||||
|
23
README.md
23
README.md
@ -16,10 +16,14 @@
|
|||||||
### Bundler
|
### Bundler
|
||||||
|
|
||||||
```
|
```
|
||||||
bundle add obsws
|
bundle add 'obsws'
|
||||||
bundle install
|
bundle install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Gem
|
||||||
|
|
||||||
|
`gem install 'obsws'`
|
||||||
|
|
||||||
## `Use`
|
## `Use`
|
||||||
|
|
||||||
#### Example `main.rb`
|
#### Example `main.rb`
|
||||||
@ -63,28 +67,23 @@ For a full list of requests refer to [Requests](https://github.com/obsproject/ob
|
|||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
Register `on_` callback methods. Method names should match the api event but snake cased.
|
Register an observer class and define `on_` methods for events. Method names should match the api event but snake cased.
|
||||||
|
|
||||||
example:
|
example:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
class Observer
|
class Observer
|
||||||
def initialize
|
def initialize
|
||||||
@e_client = OBSWS::Events::Client.new(host: "localhost", port: 4455, password: "strongpassword")
|
@e_client = OBSWS::Events::Client.new(**kwargs)
|
||||||
# register callback methods with the Event client
|
# register class with the event client
|
||||||
@e_client.register(
|
@e_client.add_observer(self)
|
||||||
[
|
|
||||||
method(:on_current_program_scene_changed),
|
|
||||||
method(:on_input_mute_state_changed)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# define "on_" event methods.
|
# define "on_" event methods.
|
||||||
def on_current_program_scene_changed(data)
|
def on_current_program_scene_changed
|
||||||
...
|
...
|
||||||
end
|
end
|
||||||
def on_input_mute_state_changed(data)
|
def on_input_mute_state_changed
|
||||||
...
|
...
|
||||||
end
|
end
|
||||||
...
|
...
|
||||||
|
@ -21,9 +21,11 @@ class Main
|
|||||||
def infostring
|
def infostring
|
||||||
resp = @r_client.get_version
|
resp = @r_client.get_version
|
||||||
[
|
[
|
||||||
"Using obs version: #{resp.obs_version}.",
|
"Using obs version:",
|
||||||
"With websocket version: #{resp.obs_web_socket_version}"
|
resp.obs_version,
|
||||||
].join(" ")
|
"With websocket version:",
|
||||||
|
resp.obs_web_socket_version
|
||||||
|
].join("\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_current_program_scene_changed(data)
|
def on_current_program_scene_changed(data)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
require_relative "../../lib/obsws"
|
require_relative "../../lib/obsws"
|
||||||
require "yaml"
|
require "yaml"
|
||||||
|
|
||||||
|
|
||||||
module LevelTypes
|
module LevelTypes
|
||||||
VU = 0
|
VU = 0
|
||||||
POSTFADER = 1
|
POSTFADER = 1
|
||||||
@ -13,12 +14,7 @@ class Main
|
|||||||
def initialize(**kwargs)
|
def initialize(**kwargs)
|
||||||
subs = OBSWS::Events::SUBS::LOW_VOLUME | OBSWS::Events::SUBS::INPUTVOLUMEMETERS
|
subs = OBSWS::Events::SUBS::LOW_VOLUME | OBSWS::Events::SUBS::INPUTVOLUMEMETERS
|
||||||
@e_client = OBSWS::Events::Client.new(subs:, **kwargs)
|
@e_client = OBSWS::Events::Client.new(subs:, **kwargs)
|
||||||
@e_client.register(
|
@e_client.add_observer(self)
|
||||||
[
|
|
||||||
method(:on_input_mute_state_changed),
|
|
||||||
method(:on_input_volume_meters)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def run
|
def run
|
||||||
|
@ -43,7 +43,7 @@ module OBSWS
|
|||||||
|
|
||||||
def add_observer(observer)
|
def add_observer(observer)
|
||||||
observer = [observer] if !observer.respond_to? :each
|
observer = [observer] if !observer.respond_to? :each
|
||||||
observer.each { |o| observers << o unless observers.include? o }
|
observer.each { |o| observers << o }
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_observer(observer)
|
def remove_observer(observer)
|
||||||
@ -52,18 +52,15 @@ module OBSWS
|
|||||||
|
|
||||||
def notify_observers(event, data)
|
def notify_observers(event, data)
|
||||||
observers.each do |o|
|
observers.each do |o|
|
||||||
if o.is_a? Method
|
if o.respond_to? "on_#{snakecase(event)}"
|
||||||
if o.name.to_s == "on_#{snakecase(event)}"
|
if data.empty?
|
||||||
data.empty? ? o.call : o.call(data)
|
o.send("on_#{snakecase(event)}")
|
||||||
end
|
else
|
||||||
elsif o.respond_to? "on_#{snakecase(event)}"
|
o.send("on_#{snakecase(event)}", data)
|
||||||
data.empty? ? o.send("on_#{snakecase(event)}") : o.send("on_#{snakecase(event)}", data)
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
alias_method :register, :add_observer
|
|
||||||
alias_method :deregister, :remove_observer
|
|
||||||
end
|
end
|
||||||
|
|
||||||
class Client
|
class Client
|
||||||
|
@ -7,11 +7,11 @@ module OBSWS
|
|||||||
end
|
end
|
||||||
|
|
||||||
def minor
|
def minor
|
||||||
4
|
3
|
||||||
end
|
end
|
||||||
|
|
||||||
def patch
|
def patch
|
||||||
0
|
3
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_a
|
def to_a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user