Ruby clients for OBS Studio WebSocket v5.0
Go to file
2022-10-23 05:25:47 +01:00
examples/events initial commit 2022-10-22 22:30:40 +01:00
lib patch bump 2022-10-23 04:39:39 +01:00
test initial commit 2022-10-22 22:30:40 +01:00
.gitignore initial commit 2022-10-22 22:30:40 +01:00
CHANGELOG.md initial commit 2022-10-22 22:30:40 +01:00
Gemfile initial commit 2022-10-22 22:30:40 +01:00
Gemfile.lock patch bump 2022-10-23 04:39:39 +01:00
LICENSE Initial commit 2022-10-22 21:47:31 +01:00
main.rb initial commit 2022-10-22 22:30:40 +01:00
obsws.gemspec pause main thread until authentication successful 2022-10-23 04:39:22 +01:00
Rakefile initial commit 2022-10-22 22:30:40 +01:00
README.md fix LICENSE link in readme 2022-10-23 05:25:47 +01:00

Gem Version License: MIT code style: prettier

A Ruby wrapper around OBS Studio WebSocket v5.0

Requirements

  • OBS Studio
  • OBS Websocket v5 Plugin
    • With the release of OBS Studio version 28, Websocket plugin is included by default. But it should be manually installed for earlier versions of OBS.
  • Ruby 3.0 or greater

Use

Example main.rb

pass host, port and password as keyword arguments.

require "obsws"

def main
  r_client =
    OBSWS::Requests::Client.new(
      host: "localhost",
      port: 4455,
      password: "strongpassword"
    )

  r_client.run do
    # Toggle the mute state of your Mic input
    r_client.toggle_input_mute("Mic/Aux")
  end
end

main if $0 == __FILE__

Requests

Method names for requests match the API calls but snake cased. run accepts a block that closes the socket once you are done.

example:

r_client.run do
  # GetVersion
  resp = r_client.get_version

  # SetCurrentProgramScene
  r_client.set_current_program_scene("BRB")
end

For a full list of requests refer to Requests

Events

Register an observer class and define on_ methods for events. Method names should match the api event but snake cased.

example:

class Observer
    def initialize
        @e_client = OBSWS::Events::Client.new(**kwargs)
        # register class with the event client
        @e_client.add_observer(self)
    end

    # define "on_" event methods.
    def on_current_program_scene_changed
        ...
    end
    def on_input_mute_state_changed
        ...
    end
    ...
end

For a full list of events refer to Events

Attributes

For both request responses and event data you may inspect the available attributes using attrs.

example:

resp = cl.get_version
p resp.attrs

def on_scene_created(data):
    p data.attrs

Errors

If a request fails an OBSWSError will be raised with a status code.

For a full list of status codes refer to Codes

Tests

To run all tests:

bundle exec rake -v

Official Documentation

For the full documentation: