Ruby clients for OBS Studio WebSocket v5.0
Go to file
2023-07-21 06:37:14 +01:00
examples raekfile updated 2023-07-21 06:37:14 +01:00
lib remove unnecessary assignment. 2023-07-21 06:04:09 +01:00
test add attr_reader r_client for OBSWSTest 2023-07-19 15:24:15 +01:00
.gitignore minor version bump 2023-07-19 15:14:46 +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 minor version bump 2023-07-19 15:14:46 +01:00
LICENSE Initial commit 2022-10-22 21:47:31 +01:00
main.rb raekfile updated 2023-07-21 06:37:14 +01:00
obsws.gemspec minor version bump 2023-07-19 15:14:46 +01:00
Rakefile raekfile updated 2023-07-21 06:37:14 +01:00
README.md raekfile updated 2023-07-21 06:37:14 +01:00

Gem Version License: MIT Ruby Code Style

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

Installation

Bundler

bundle add 'obsws'
bundle install

Gem

gem install 'obsws'

Use

Example main.rb

Pass host, port and password as keyword arguments.

require "obsws"

class Main
  def run
    OBSWS::Requests::Client
      .new(host: "localhost", port: 4455, password: "strongpassword")
      .run do |client|
        # Toggle the mute state of your Mic input
        client.toggle_input_mute("Mic/Aux")
      end
  end
end

Main.new.run if $PROGRAM_NAME == __FILE__

Passing OBSWS::Requests::Client.run a block closes the socket once the block returns.

Requests

Method names for requests match the API calls but snake cased.

example:

# GetVersion
resp = r_client.get_version

# SetCurrentProgramScene
r_client.set_current_program_scene("BRB")

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

Logging

To see the raw messages set log level to debug

example:

require "obsws"

OBSWS::LOGGER.debug!
...

Tests

To run all tests:

bundle exec rake -v

Official Documentation

For the full documentation: