obsws 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -17
- data/lib/obsws/event.rb +3 -3
- data/lib/obsws/req.rb +209 -209
- data/lib/obsws/version.rb +4 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f23333577b91916057461d9084494c147f63cd3feb90e121ab33c5b795af1566
|
4
|
+
data.tar.gz: e5b31955a09ace6b520351252034ca8b1bb8932698859b12a3af3dd2b70485d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14411743ad90540ec041ed46c30f1347512174a876a6891bf1351c7f4025c712cc9f57aad1911adabc1368fb1f907b982f519ad713404d516d88af42a0687120
|
7
|
+
data.tar.gz: 28ac135781ba0610baa21912d9105b1ebd3762b682693d9866172a0ae7dde9e322de68174f7bf23da8fb6d8faf813128fc1a6c1e3d04557be533d4cded5ef59c
|
data/README.md
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
[](https://badge.fury.io/rb/obsws)
|
2
2
|
[](https://github.com/onyx-and-iris/obsws-ruby/blob/dev/LICENSE)
|
3
|
-
[](https://github.com/standardrb/standard)
|
4
4
|
|
5
5
|
# A Ruby wrapper around OBS Studio WebSocket v5.0
|
6
6
|
|
7
7
|
## Requirements
|
8
8
|
|
9
|
-
-
|
10
|
-
-
|
11
|
-
|
12
|
-
-
|
9
|
+
- [OBS Studio](https://obsproject.com/)
|
10
|
+
- [OBS Websocket v5 Plugin](https://github.com/obsproject/obs-websocket/releases/tag/5.0.0)
|
11
|
+
- 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.
|
12
|
+
- Ruby 3.0 or greater
|
13
13
|
|
14
14
|
## Installation
|
15
15
|
|
@@ -34,17 +34,12 @@ pass `host`, `port` and `password` as keyword arguments.
|
|
34
34
|
require "obsws"
|
35
35
|
|
36
36
|
def main
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
r_client.run do
|
45
|
-
# Toggle the mute state of your Mic input
|
46
|
-
r_client.toggle_input_mute("Mic/Aux")
|
47
|
-
end
|
37
|
+
OBSWS::Requests::Client
|
38
|
+
.new(host: "localhost", port: 4455, password: "strongpassword")
|
39
|
+
.run do |client|
|
40
|
+
# Toggle the mute state of your Mic input
|
41
|
+
client.toggle_input_mute("Mic/Aux")
|
42
|
+
end
|
48
43
|
end
|
49
44
|
|
50
45
|
main if $0 == __FILE__
|
@@ -140,4 +135,4 @@ bundle exec rake -v
|
|
140
135
|
|
141
136
|
For the full documentation:
|
142
137
|
|
143
|
-
-
|
138
|
+
- [OBS Websocket SDK](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#obs-websocket-501-protocol)
|
data/lib/obsws/event.rb
CHANGED
@@ -20,7 +20,7 @@ module OBSWS
|
|
20
20
|
UI = 1 << 10
|
21
21
|
|
22
22
|
LOW_VOLUME = GENERAL | CONFIG | SCENES | INPUTS | TRANSITIONS | FILTERS | OUTPUTS |
|
23
|
-
|
23
|
+
SCENEITEMS | MEDIAINPUTS | VENDORS | UI
|
24
24
|
|
25
25
|
INPUTVOLUMEMETERS = 1 << 16
|
26
26
|
INPUTACTIVESTATECHANGED = 1 << 17
|
@@ -28,7 +28,7 @@ module OBSWS
|
|
28
28
|
SCENEITEMTRANSFORMCHANGED = 1 << 19
|
29
29
|
|
30
30
|
HIGH_VOLUME = INPUTVOLUMEMETERS | INPUTACTIVESTATECHANGED | INPUTSHOWSTATECHANGED |
|
31
|
-
|
31
|
+
SCENEITEMTRANSFORMCHANGED
|
32
32
|
|
33
33
|
ALL = LOW_VOLUME | HIGH_VOLUME
|
34
34
|
end
|
@@ -74,7 +74,7 @@ module OBSWS
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def to_s
|
77
|
-
|
77
|
+
self.class.name.split("::").last(2).join("::")
|
78
78
|
end
|
79
79
|
|
80
80
|
def update(op_code, data)
|
data/lib/obsws/req.rb
CHANGED
@@ -16,15 +16,15 @@ module OBSWS
|
|
16
16
|
@base_client = Base.new(**kwargs)
|
17
17
|
LOGGER.info("#{self} succesfully identified with server")
|
18
18
|
@base_client.add_observer(self)
|
19
|
-
@response = {
|
19
|
+
@response = {requestId: 0}
|
20
20
|
end
|
21
21
|
|
22
22
|
def to_s
|
23
|
-
|
23
|
+
self.class.name.split("::").last(2).join("::")
|
24
24
|
end
|
25
25
|
|
26
26
|
def run
|
27
|
-
yield
|
27
|
+
yield(self)
|
28
28
|
ensure
|
29
29
|
close
|
30
30
|
WaitUtil.wait_for_condition(
|
@@ -63,34 +63,34 @@ module OBSWS
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def get_version
|
66
|
-
resp = call(
|
66
|
+
resp = call(:GetVersion)
|
67
67
|
Mixin::Response.new(resp, resp.keys)
|
68
68
|
end
|
69
69
|
|
70
70
|
def get_stats
|
71
|
-
resp = call(
|
71
|
+
resp = call(:GetStats)
|
72
72
|
Mixin::Response.new(resp, resp.keys)
|
73
73
|
end
|
74
74
|
|
75
75
|
def broadcast_custom_event(data)
|
76
|
-
call(
|
76
|
+
call(:BroadcastCustomEvent, data)
|
77
77
|
end
|
78
78
|
|
79
|
-
def call_vendor_request(
|
80
|
-
payload = {
|
79
|
+
def call_vendor_request(vendor_name, request_type, data = nil)
|
80
|
+
payload = {vendorName: vendor_name, requestType: request_type}
|
81
81
|
payload[:requestData] = data if data
|
82
|
-
resp = call(
|
82
|
+
resp = call(:CallVendorRequest, payload)
|
83
83
|
Mixin::Response.new(resp, resp.keys)
|
84
84
|
end
|
85
85
|
|
86
86
|
def get_hotkey_list
|
87
|
-
resp = call(
|
87
|
+
resp = call(:GetHotkeyList)
|
88
88
|
Mixin::Response.new(resp, resp.keys)
|
89
89
|
end
|
90
90
|
|
91
91
|
def trigger_hotkey_by_name(name)
|
92
|
-
payload = {
|
93
|
-
call(
|
92
|
+
payload = {hotkeyName: name}
|
93
|
+
call(:TriggerHotkeyByName, payload)
|
94
94
|
end
|
95
95
|
|
96
96
|
def trigger_hotkey_by_key_sequence(
|
@@ -109,63 +109,63 @@ module OBSWS
|
|
109
109
|
cmd: press_cmd
|
110
110
|
}
|
111
111
|
}
|
112
|
-
call(
|
112
|
+
call(:TriggerHotkeyByKeySequence, payload)
|
113
113
|
end
|
114
114
|
|
115
115
|
def sleep(sleep_millis = nil, sleep_frames = nil)
|
116
|
-
payload = {
|
117
|
-
call(
|
116
|
+
payload = {sleepMillis: sleep_millis, sleepFrames: sleep_frames}
|
117
|
+
call(:Sleep, payload)
|
118
118
|
end
|
119
119
|
|
120
120
|
def get_persistent_data(realm, slot_name)
|
121
|
-
payload = {
|
122
|
-
resp = call(
|
121
|
+
payload = {realm: realm, slotName: slot_name}
|
122
|
+
resp = call(:GetPersistentData, payload)
|
123
123
|
Mixin::Response.new(resp, resp.keys)
|
124
124
|
end
|
125
125
|
|
126
126
|
def set_persistent_data(realm, slot_name, slot_value)
|
127
|
-
payload = {
|
128
|
-
call(
|
127
|
+
payload = {realm: realm, slotName: slot_name, slotValue: slot_value}
|
128
|
+
call(:SetPersistentData, payload)
|
129
129
|
end
|
130
130
|
|
131
131
|
def get_scene_collection_list
|
132
|
-
resp = call(
|
132
|
+
resp = call(:GetSceneCollectionList)
|
133
133
|
Mixin::Response.new(resp, resp.keys)
|
134
134
|
end
|
135
135
|
|
136
136
|
def set_current_scene_collection(name)
|
137
|
-
payload = {
|
138
|
-
call(
|
137
|
+
payload = {sceneCollectionName: name}
|
138
|
+
call(:SetCurrentSceneCollection, payload)
|
139
139
|
end
|
140
140
|
|
141
141
|
def create_scene_collection(name)
|
142
|
-
payload = {
|
143
|
-
call(
|
142
|
+
payload = {sceneCollectionName: name}
|
143
|
+
call(:CreateSceneCollection, payload)
|
144
144
|
end
|
145
145
|
|
146
146
|
def get_profile_list
|
147
|
-
resp = call(
|
147
|
+
resp = call(:GetProfileList)
|
148
148
|
Mixin::Response.new(resp, resp.keys)
|
149
149
|
end
|
150
150
|
|
151
151
|
def set_current_profile(name)
|
152
|
-
payload = {
|
153
|
-
call(
|
152
|
+
payload = {profileName: name}
|
153
|
+
call(:SetCurrentProfile, payload)
|
154
154
|
end
|
155
155
|
|
156
156
|
def create_profile(name)
|
157
|
-
payload = {
|
158
|
-
call(
|
157
|
+
payload = {profileName: name}
|
158
|
+
call(:CreateProfile, payload)
|
159
159
|
end
|
160
160
|
|
161
161
|
def remove_profile(name)
|
162
|
-
payload = {
|
163
|
-
call(
|
162
|
+
payload = {profileName: name}
|
163
|
+
call(:RemoveProfile, payload)
|
164
164
|
end
|
165
165
|
|
166
166
|
def get_profile_parameter(category, name)
|
167
|
-
payload = {
|
168
|
-
resp = call(
|
167
|
+
payload = {parameterCategory: category, parameterName: name}
|
168
|
+
resp = call(:GetProfileParameter, payload)
|
169
169
|
Mixin::Response.new(resp, resp.keys)
|
170
170
|
end
|
171
171
|
|
@@ -175,11 +175,11 @@ module OBSWS
|
|
175
175
|
parameterName: name,
|
176
176
|
parameterValue: value
|
177
177
|
}
|
178
|
-
call(
|
178
|
+
call(:SetProfileParameter, payload)
|
179
179
|
end
|
180
180
|
|
181
181
|
def get_video_settings
|
182
|
-
resp = call(
|
182
|
+
resp = call(:GetVideoSettings)
|
183
183
|
Mixin::Response.new(resp, resp.keys)
|
184
184
|
end
|
185
185
|
|
@@ -199,11 +199,11 @@ module OBSWS
|
|
199
199
|
outputWidth: out_width,
|
200
200
|
outputHeight: out_height
|
201
201
|
}
|
202
|
-
call(
|
202
|
+
call(:SetVideoSettings, payload)
|
203
203
|
end
|
204
204
|
|
205
205
|
def get_stream_service_settings
|
206
|
-
resp = call(
|
206
|
+
resp = call(:GetStreamServiceSettings)
|
207
207
|
Mixin::Response.new(resp, resp.keys)
|
208
208
|
end
|
209
209
|
|
@@ -212,17 +212,17 @@ module OBSWS
|
|
212
212
|
streamServiceType: ss_type,
|
213
213
|
streamServiceSettings: ss_settings
|
214
214
|
}
|
215
|
-
call(
|
215
|
+
call(:SetStreamServiceSettings, payload)
|
216
216
|
end
|
217
217
|
|
218
218
|
def get_record_directory
|
219
|
-
resp = call(
|
219
|
+
resp = call(:GetRecordDirectory)
|
220
220
|
Mixin::Response.new(resp, resp.keys)
|
221
221
|
end
|
222
222
|
|
223
223
|
def get_source_active(name)
|
224
|
-
payload = {
|
225
|
-
resp = call(
|
224
|
+
payload = {sourceName: name}
|
225
|
+
resp = call(:GetSourceActive, payload)
|
226
226
|
Mixin::Response.new(resp, resp.keys)
|
227
227
|
end
|
228
228
|
|
@@ -234,7 +234,7 @@ module OBSWS
|
|
234
234
|
imageHeight: height,
|
235
235
|
imageCompressionQuality: quality
|
236
236
|
}
|
237
|
-
resp = call(
|
237
|
+
resp = call(:GetSourceScreenshot, payload)
|
238
238
|
Mixin::Response.new(resp, resp.keys)
|
239
239
|
end
|
240
240
|
|
@@ -254,58 +254,58 @@ module OBSWS
|
|
254
254
|
imageHeight: height,
|
255
255
|
imageCompressionQuality: quality
|
256
256
|
}
|
257
|
-
resp = call(
|
257
|
+
resp = call(:SaveSourceScreenshot, payload)
|
258
258
|
Mixin::Response.new(resp, resp.keys)
|
259
259
|
end
|
260
260
|
|
261
261
|
def get_scene_list
|
262
|
-
resp = call(
|
262
|
+
resp = call(:GetSceneList)
|
263
263
|
Mixin::Response.new(resp, resp.keys)
|
264
264
|
end
|
265
265
|
|
266
266
|
def get_group_list
|
267
|
-
resp = call(
|
267
|
+
resp = call(:GetGroupList)
|
268
268
|
Mixin::Response.new(resp, resp.keys)
|
269
269
|
end
|
270
270
|
|
271
271
|
def get_current_program_scene
|
272
|
-
resp = call(
|
272
|
+
resp = call(:GetCurrentProgramScene)
|
273
273
|
Mixin::Response.new(resp, resp.keys)
|
274
274
|
end
|
275
275
|
|
276
276
|
def set_current_program_scene(name)
|
277
|
-
payload = {
|
278
|
-
call(
|
277
|
+
payload = {sceneName: name}
|
278
|
+
call(:SetCurrentProgramScene, payload)
|
279
279
|
end
|
280
280
|
|
281
281
|
def get_current_preview_scene
|
282
|
-
resp = call(
|
282
|
+
resp = call(:GetCurrentPreviewScene)
|
283
283
|
Mixin::Response.new(resp, resp.keys)
|
284
284
|
end
|
285
285
|
|
286
286
|
def set_current_preview_scene(name)
|
287
|
-
payload = {
|
288
|
-
call(
|
287
|
+
payload = {sceneName: name}
|
288
|
+
call(:SetCurrentPreviewScene, payload)
|
289
289
|
end
|
290
290
|
|
291
291
|
def create_scene(name)
|
292
|
-
payload = {
|
293
|
-
call(
|
292
|
+
payload = {sceneName: name}
|
293
|
+
call(:CreateScene, payload)
|
294
294
|
end
|
295
295
|
|
296
296
|
def remove_scene(name)
|
297
|
-
payload = {
|
298
|
-
call(
|
297
|
+
payload = {sceneName: name}
|
298
|
+
call(:RemoveScene, payload)
|
299
299
|
end
|
300
300
|
|
301
301
|
def set_scene_name(old_name, new_name)
|
302
|
-
payload = {
|
303
|
-
call(
|
302
|
+
payload = {sceneName: old_name, newSceneName: new_name}
|
303
|
+
call(:SetSceneName, payload)
|
304
304
|
end
|
305
305
|
|
306
306
|
def get_scene_scene_transition_override(name)
|
307
|
-
payload = {
|
308
|
-
resp = call(
|
307
|
+
payload = {sceneName: name}
|
308
|
+
resp = call(:GetSceneSceneTransitionOverride, payload)
|
309
309
|
Mixin::Response.new(resp, resp.keys)
|
310
310
|
end
|
311
311
|
|
@@ -315,23 +315,23 @@ module OBSWS
|
|
315
315
|
transitionName: tr_name,
|
316
316
|
transitionDuration: tr_duration
|
317
317
|
}
|
318
|
-
call(
|
318
|
+
call(:SetSceneSceneTransitionOverride, payload)
|
319
319
|
end
|
320
320
|
|
321
321
|
def get_input_list(kind = nil)
|
322
|
-
payload = {
|
323
|
-
resp = call(
|
322
|
+
payload = {inputKind: kind}
|
323
|
+
resp = call(:GetInputList, payload)
|
324
324
|
Mixin::Response.new(resp, resp.keys)
|
325
325
|
end
|
326
326
|
|
327
327
|
def get_input_kind_list(unversioned)
|
328
|
-
payload = {
|
329
|
-
resp = call(
|
328
|
+
payload = {unversioned: unversioned}
|
329
|
+
resp = call(:GetInputKindList, payload)
|
330
330
|
Mixin::Response.new(resp, resp.keys)
|
331
331
|
end
|
332
332
|
|
333
333
|
def get_special_inputs
|
334
|
-
resp = call(
|
334
|
+
resp = call(:GetSpecialInputs)
|
335
335
|
Mixin::Response.new(resp, resp.keys)
|
336
336
|
end
|
337
337
|
|
@@ -349,57 +349,57 @@ module OBSWS
|
|
349
349
|
inputSettings: input_settings,
|
350
350
|
sceneItemEnabled: scene_item_enabled
|
351
351
|
}
|
352
|
-
resp = call(
|
352
|
+
resp = call(:CreateInput, payload)
|
353
353
|
Mixin::Response.new(resp, resp.keys)
|
354
354
|
end
|
355
355
|
|
356
356
|
def remove_input(name)
|
357
|
-
payload = {
|
358
|
-
call(
|
357
|
+
payload = {inputName: name}
|
358
|
+
call(:RemoveInput, payload)
|
359
359
|
end
|
360
360
|
|
361
361
|
def set_input_name(old_name, new_name)
|
362
|
-
payload = {
|
363
|
-
call(
|
362
|
+
payload = {inputName: old_name, newInputName: new_name}
|
363
|
+
call(:SetInputName, payload)
|
364
364
|
end
|
365
365
|
|
366
366
|
def get_input_default_settings(kind)
|
367
|
-
payload = {
|
368
|
-
resp = call(
|
367
|
+
payload = {inputKind: kind}
|
368
|
+
resp = call(:GetInputDefaultSettings, payload)
|
369
369
|
Mixin::Response.new(resp, resp.keys)
|
370
370
|
end
|
371
371
|
|
372
372
|
def get_input_settings(name)
|
373
|
-
payload = {
|
374
|
-
resp = call(
|
373
|
+
payload = {inputName: name}
|
374
|
+
resp = call(:GetInputSettings, payload)
|
375
375
|
Mixin::Response.new(resp, resp.keys)
|
376
376
|
end
|
377
377
|
|
378
378
|
def set_input_settings(name, settings, overlay)
|
379
|
-
payload = {
|
380
|
-
call(
|
379
|
+
payload = {inputName: name, inputSettings: settings, overlay: overlay}
|
380
|
+
call(:SetInputSettings, payload)
|
381
381
|
end
|
382
382
|
|
383
383
|
def get_input_mute(name)
|
384
|
-
payload = {
|
385
|
-
resp = call(
|
384
|
+
payload = {inputName: name}
|
385
|
+
resp = call(:GetInputMute, payload)
|
386
386
|
Mixin::Response.new(resp, resp.keys)
|
387
387
|
end
|
388
388
|
|
389
389
|
def set_input_mute(name, muted)
|
390
|
-
payload = {
|
391
|
-
call(
|
390
|
+
payload = {inputName: name, inputMuted: muted}
|
391
|
+
call(:SetInputMute, payload)
|
392
392
|
end
|
393
393
|
|
394
394
|
def toggle_input_mute(name)
|
395
|
-
payload = {
|
396
|
-
resp = call(
|
395
|
+
payload = {inputName: name}
|
396
|
+
resp = call(:ToggleInputMute, payload)
|
397
397
|
Mixin::Response.new(resp, resp.keys)
|
398
398
|
end
|
399
399
|
|
400
400
|
def get_input_volume(name)
|
401
|
-
payload = {
|
402
|
-
resp = call(
|
401
|
+
payload = {inputName: name}
|
402
|
+
resp = call(:GetInputVolume, payload)
|
403
403
|
Mixin::Response.new(resp, resp.keys)
|
404
404
|
end
|
405
405
|
|
@@ -409,117 +409,117 @@ module OBSWS
|
|
409
409
|
inputVolumeMul: vol_mul,
|
410
410
|
inputVolumeDb: vol_db
|
411
411
|
}
|
412
|
-
call(
|
412
|
+
call(:SetInputVolume, payload)
|
413
413
|
end
|
414
414
|
|
415
415
|
def get_input_audio_balance(name)
|
416
|
-
payload = {
|
417
|
-
resp = call(
|
416
|
+
payload = {inputName: name}
|
417
|
+
resp = call(:GetInputAudioBalance, payload)
|
418
418
|
Mixin::Response.new(resp, resp.keys)
|
419
419
|
end
|
420
420
|
|
421
421
|
def set_input_audio_balance(name, balance)
|
422
|
-
payload = {
|
423
|
-
call(
|
422
|
+
payload = {inputName: name, inputAudioBalance: balance}
|
423
|
+
call(:SetInputAudioBalance, payload)
|
424
424
|
end
|
425
425
|
|
426
426
|
def get_input_audio_sync_offset(name)
|
427
|
-
payload = {
|
428
|
-
resp = call(
|
427
|
+
payload = {inputName: name}
|
428
|
+
resp = call(:GetInputAudioSyncOffset, payload)
|
429
429
|
Mixin::Response.new(resp, resp.keys)
|
430
430
|
end
|
431
431
|
|
432
432
|
def set_input_audio_sync_offset(name, offset)
|
433
|
-
payload = {
|
434
|
-
call(
|
433
|
+
payload = {inputName: name, inputAudioSyncOffset: offset}
|
434
|
+
call(:SetInputAudioSyncOffset, payload)
|
435
435
|
end
|
436
436
|
|
437
437
|
def get_input_audio_monitor_type(name)
|
438
|
-
payload = {
|
439
|
-
resp = call(
|
438
|
+
payload = {inputName: name}
|
439
|
+
resp = call(:GetInputAudioMonitorType, payload)
|
440
440
|
Mixin::Response.new(resp, resp.keys)
|
441
441
|
end
|
442
442
|
|
443
443
|
def set_input_audio_monitor_type(name, mon_type)
|
444
|
-
payload = {
|
445
|
-
call(
|
444
|
+
payload = {inputName: name, monitorType: mon_type}
|
445
|
+
call(:SetInputAudioMonitorType, payload)
|
446
446
|
end
|
447
447
|
|
448
448
|
def get_input_audio_tracks(name)
|
449
|
-
payload = {
|
450
|
-
resp = call(
|
449
|
+
payload = {inputName: name}
|
450
|
+
resp = call(:GetInputAudioTracks, payload)
|
451
451
|
Mixin::Response.new(resp, resp.keys)
|
452
452
|
end
|
453
453
|
|
454
454
|
def set_input_audio_tracks(name, track)
|
455
|
-
payload = {
|
456
|
-
call(
|
455
|
+
payload = {inputName: name, inputAudioTracks: track}
|
456
|
+
call(:SetInputAudioTracks, payload)
|
457
457
|
end
|
458
458
|
|
459
459
|
def get_input_properties_list_property_items(input_name, prop_name)
|
460
|
-
payload = {
|
461
|
-
resp = call(
|
460
|
+
payload = {inputName: input_name, propertyName: prop_name}
|
461
|
+
resp = call(:GetInputPropertiesListPropertyItems, payload)
|
462
462
|
Mixin::Response.new(resp, resp.keys)
|
463
463
|
end
|
464
464
|
|
465
465
|
def press_input_properties_button(input_name, prop_name)
|
466
|
-
payload = {
|
467
|
-
call(
|
466
|
+
payload = {inputName: input_name, propertyName: prop_name}
|
467
|
+
call(:PressInputPropertiesButton, payload)
|
468
468
|
end
|
469
469
|
|
470
470
|
def get_transition_kind_list
|
471
|
-
resp = call(
|
471
|
+
resp = call(:GetTransitionKindList)
|
472
472
|
Mixin::Response.new(resp, resp.keys)
|
473
473
|
end
|
474
474
|
|
475
475
|
def get_scene_transition_list
|
476
|
-
resp = call(
|
476
|
+
resp = call(:GetSceneTransitionList)
|
477
477
|
Mixin::Response.new(resp, resp.keys)
|
478
478
|
end
|
479
479
|
|
480
480
|
def get_current_scene_transition
|
481
|
-
resp = call(
|
481
|
+
resp = call(:GetCurrentSceneTransition)
|
482
482
|
Mixin::Response.new(resp, resp.keys)
|
483
483
|
end
|
484
484
|
|
485
485
|
def set_current_scene_transition(name)
|
486
|
-
payload = {
|
487
|
-
call(
|
486
|
+
payload = {transitionName: name}
|
487
|
+
call(:SetCurrentSceneTransition, payload)
|
488
488
|
end
|
489
489
|
|
490
490
|
def set_current_scene_transition_duration(duration)
|
491
|
-
payload = {
|
492
|
-
call(
|
491
|
+
payload = {transitionDuration: duration}
|
492
|
+
call(:SetCurrentSceneTransitionDuration, payload)
|
493
493
|
end
|
494
494
|
|
495
495
|
def set_current_scene_transition_settings(settings, overlay = nil)
|
496
|
-
payload = {
|
497
|
-
call(
|
496
|
+
payload = {transitionSettings: settings, overlay: overlay}
|
497
|
+
call(:SetCurrentSceneTransitionSettings, payload)
|
498
498
|
end
|
499
499
|
|
500
500
|
def get_current_scene_transition_cursor
|
501
|
-
resp = call(
|
501
|
+
resp = call(:GetCurrentSceneTransitionCursor)
|
502
502
|
Mixin::Response.new(resp, resp.keys)
|
503
503
|
end
|
504
504
|
|
505
505
|
def trigger_studio_mode_transition
|
506
|
-
call(
|
506
|
+
call(:TriggerStudioModeTransition)
|
507
507
|
end
|
508
508
|
|
509
509
|
def set_t_bar_position(pos, release = nil)
|
510
|
-
payload = {
|
511
|
-
call(
|
510
|
+
payload = {position: pos, release: release}
|
511
|
+
call(:SetTBarPosition, payload)
|
512
512
|
end
|
513
513
|
|
514
514
|
def get_source_filter_list(name)
|
515
|
-
payload = {
|
516
|
-
resp = call(
|
515
|
+
payload = {sourceName: name}
|
516
|
+
resp = call(:GetSourceFilterList, payload)
|
517
517
|
Mixin::Response.new(resp, resp.keys)
|
518
518
|
end
|
519
519
|
|
520
520
|
def get_source_filter_default_settings(kind)
|
521
|
-
payload = {
|
522
|
-
resp = call(
|
521
|
+
payload = {filterKind: kind}
|
522
|
+
resp = call(:GetSourceFilterDefaultSettings, payload)
|
523
523
|
Mixin::Response.new(resp, resp.keys)
|
524
524
|
end
|
525
525
|
|
@@ -535,12 +535,12 @@ module OBSWS
|
|
535
535
|
filterKind: filter_kind,
|
536
536
|
filterSettings: filter_settings
|
537
537
|
}
|
538
|
-
call(
|
538
|
+
call(:CreateSourceFilter, payload)
|
539
539
|
end
|
540
540
|
|
541
541
|
def remove_source_filter(source_name, filter_name)
|
542
|
-
payload = {
|
543
|
-
call(
|
542
|
+
payload = {sourceName: source_name, filterName: filter_name}
|
543
|
+
call(:RemoveSourceFilter, payload)
|
544
544
|
end
|
545
545
|
|
546
546
|
def set_source_filter_name(source_name, old_filter_name, new_filter_name)
|
@@ -549,12 +549,12 @@ module OBSWS
|
|
549
549
|
filterName: old_filter_name,
|
550
550
|
newFilterName: new_filter_name
|
551
551
|
}
|
552
|
-
call(
|
552
|
+
call(:SetSourceFilterName, payload)
|
553
553
|
end
|
554
554
|
|
555
555
|
def get_source_filter(source_name, filter_name)
|
556
|
-
payload = {
|
557
|
-
resp = call(
|
556
|
+
payload = {sourceName: source_name, filterName: filter_name}
|
557
|
+
resp = call(:GetSourceFilter, payload)
|
558
558
|
Mixin::Response.new(resp, resp.keys)
|
559
559
|
end
|
560
560
|
|
@@ -564,7 +564,7 @@ module OBSWS
|
|
564
564
|
filterName: filter_name,
|
565
565
|
filterIndex: filter_index
|
566
566
|
}
|
567
|
-
call(
|
567
|
+
call(:SetSourceFilterIndex, payload)
|
568
568
|
end
|
569
569
|
|
570
570
|
def set_source_filter_settings(
|
@@ -579,7 +579,7 @@ module OBSWS
|
|
579
579
|
filterSettings: settings,
|
580
580
|
overlay: overlay
|
581
581
|
}
|
582
|
-
call(
|
582
|
+
call(:SetSourceFilterSettings, payload)
|
583
583
|
end
|
584
584
|
|
585
585
|
def set_source_filter_enabled(source_name, filter_name, enabled)
|
@@ -588,18 +588,18 @@ module OBSWS
|
|
588
588
|
filterName: filter_name,
|
589
589
|
filterEnabled: enabled
|
590
590
|
}
|
591
|
-
call(
|
591
|
+
call(:SetSourceFilterEnabled, payload)
|
592
592
|
end
|
593
593
|
|
594
594
|
def get_scene_item_list(name)
|
595
|
-
payload = {
|
596
|
-
resp = call(
|
595
|
+
payload = {sceneName: name}
|
596
|
+
resp = call(:GetSceneItemList, payload)
|
597
597
|
Mixin::Response.new(resp, resp.keys)
|
598
598
|
end
|
599
599
|
|
600
600
|
def get_group_scene_item_list(name)
|
601
|
-
payload = {
|
602
|
-
resp = call(
|
601
|
+
payload = {sceneName: name}
|
602
|
+
resp = call(:GetGroupSceneItemList, payload)
|
603
603
|
Mixin::Response.new(resp, resp.keys)
|
604
604
|
end
|
605
605
|
|
@@ -609,7 +609,7 @@ module OBSWS
|
|
609
609
|
sourceName: source_name,
|
610
610
|
searchOffset: offset
|
611
611
|
}
|
612
|
-
resp = call(
|
612
|
+
resp = call(:GetSceneItemId, payload)
|
613
613
|
Mixin::Response.new(resp, resp.keys)
|
614
614
|
end
|
615
615
|
|
@@ -619,13 +619,13 @@ module OBSWS
|
|
619
619
|
sourceName: source_name,
|
620
620
|
sceneItemEnabled: enabled
|
621
621
|
}
|
622
|
-
resp = call(
|
622
|
+
resp = call(:CreateSceneItem, payload)
|
623
623
|
Mixin::Response.new(resp, resp.keys)
|
624
624
|
end
|
625
625
|
|
626
626
|
def remove_scene_item(scene_name, item_id)
|
627
|
-
payload = {
|
628
|
-
call(
|
627
|
+
payload = {sceneName: scene_name, sceneItemId: item_id}
|
628
|
+
call(:RemoveSceneItem, payload)
|
629
629
|
end
|
630
630
|
|
631
631
|
def duplicate_scene_item(scene_name, item_id, dest_scene_name = nil)
|
@@ -634,13 +634,13 @@ module OBSWS
|
|
634
634
|
sceneItemId: item_id,
|
635
635
|
destinationSceneName: dest_scene_name
|
636
636
|
}
|
637
|
-
resp = call(
|
637
|
+
resp = call(:DuplicateSceneItem, payload)
|
638
638
|
Mixin::Response.new(resp, resp.keys)
|
639
639
|
end
|
640
640
|
|
641
641
|
def get_scene_item_transform(scene_name, item_id)
|
642
|
-
payload = {
|
643
|
-
resp = call(
|
642
|
+
payload = {sceneName: scene_name, sceneItemId: item_id}
|
643
|
+
resp = call(:GetSceneItemTransform, payload)
|
644
644
|
Mixin::Response.new(resp, resp.keys)
|
645
645
|
end
|
646
646
|
|
@@ -650,12 +650,12 @@ module OBSWS
|
|
650
650
|
sceneItemId: item_id,
|
651
651
|
sceneItemTransform: transform
|
652
652
|
}
|
653
|
-
call(
|
653
|
+
call(:SetSceneItemTransform, payload)
|
654
654
|
end
|
655
655
|
|
656
656
|
def get_scene_item_enabled(scene_name, item_id)
|
657
|
-
payload = {
|
658
|
-
resp = call(
|
657
|
+
payload = {sceneName: scene_name, sceneItemId: item_id}
|
658
|
+
resp = call(:GetSceneItemEnabled, payload)
|
659
659
|
Mixin::Response.new(resp, resp.keys)
|
660
660
|
end
|
661
661
|
|
@@ -665,12 +665,12 @@ module OBSWS
|
|
665
665
|
sceneItemId: item_id,
|
666
666
|
sceneItemEnabled: enabled
|
667
667
|
}
|
668
|
-
call(
|
668
|
+
call(:SetSceneItemEnabled, payload)
|
669
669
|
end
|
670
670
|
|
671
671
|
def get_scene_item_locked(scene_name, item_id)
|
672
|
-
payload = {
|
673
|
-
resp = call(
|
672
|
+
payload = {sceneName: scene_name, sceneItemId: item_id}
|
673
|
+
resp = call(:GetSceneItemLocked, payload)
|
674
674
|
Mixin::Response.new(resp, resp.keys)
|
675
675
|
end
|
676
676
|
|
@@ -680,12 +680,12 @@ module OBSWS
|
|
680
680
|
sceneItemId: item_id,
|
681
681
|
sceneItemLocked: locked
|
682
682
|
}
|
683
|
-
call(
|
683
|
+
call(:SetSceneItemLocked, payload)
|
684
684
|
end
|
685
685
|
|
686
686
|
def get_scene_item_index(scene_name, item_id)
|
687
|
-
payload = {
|
688
|
-
resp = call(
|
687
|
+
payload = {sceneName: scene_name, sceneItemId: item_id}
|
688
|
+
resp = call(:GetSceneItemIndex, payload)
|
689
689
|
Mixin::Response.new(resp, resp.keys)
|
690
690
|
end
|
691
691
|
|
@@ -693,14 +693,14 @@ module OBSWS
|
|
693
693
|
payload = {
|
694
694
|
sceneName: scene_name,
|
695
695
|
sceneItemId: item_id,
|
696
|
-
|
696
|
+
sceneItemIndex: item_index
|
697
697
|
}
|
698
|
-
call(
|
698
|
+
call(:SetSceneItemIndex, payload)
|
699
699
|
end
|
700
700
|
|
701
701
|
def get_scene_item_blend_mode(scene_name, item_id)
|
702
|
-
payload = {
|
703
|
-
resp = call(
|
702
|
+
payload = {sceneName: scene_name, sceneItemId: item_id}
|
703
|
+
resp = call(:GetSceneItemBlendMode, payload)
|
704
704
|
Mixin::Response.new(resp, resp.keys)
|
705
705
|
end
|
706
706
|
|
@@ -710,192 +710,192 @@ module OBSWS
|
|
710
710
|
sceneItemId: item_id,
|
711
711
|
sceneItemBlendMode: blend
|
712
712
|
}
|
713
|
-
call(
|
713
|
+
call(:SetSceneItemBlendMode, payload)
|
714
714
|
end
|
715
715
|
|
716
716
|
def get_virtual_cam_status
|
717
|
-
resp = call(
|
717
|
+
resp = call(:GetVirtualCamStatus)
|
718
718
|
Mixin::Response.new(resp, resp.keys)
|
719
719
|
end
|
720
720
|
|
721
721
|
def toggle_virtual_cam
|
722
|
-
resp = call(
|
722
|
+
resp = call(:ToggleVirtualCam)
|
723
723
|
Mixin::Response.new(resp, resp.keys)
|
724
724
|
end
|
725
725
|
|
726
726
|
def start_virtual_cam
|
727
|
-
call(
|
727
|
+
call(:StartVirtualCam)
|
728
728
|
end
|
729
729
|
|
730
730
|
def stop_virtual_cam
|
731
|
-
call(
|
731
|
+
call(:StopVirtualCam)
|
732
732
|
end
|
733
733
|
|
734
734
|
def get_replay_buffer_status
|
735
|
-
resp = call(
|
735
|
+
resp = call(:GetReplayBufferStatus)
|
736
736
|
Mixin::Response.new(resp, resp.keys)
|
737
737
|
end
|
738
738
|
|
739
739
|
def toggle_replay_buffer
|
740
|
-
resp = call(
|
740
|
+
resp = call(:ToggleReplayBuffer)
|
741
741
|
Mixin::Response.new(resp, resp.keys)
|
742
742
|
end
|
743
743
|
|
744
744
|
def start_replay_buffer
|
745
|
-
call(
|
745
|
+
call(:StartReplayBuffer)
|
746
746
|
end
|
747
747
|
|
748
748
|
def stop_replay_buffer
|
749
|
-
call(
|
749
|
+
call(:StopReplayBuffer)
|
750
750
|
end
|
751
751
|
|
752
752
|
def save_replay_buffer
|
753
|
-
call(
|
753
|
+
call(:SaveReplayBuffer)
|
754
754
|
end
|
755
755
|
|
756
756
|
def get_last_replay_buffer_replay
|
757
|
-
resp = call(
|
757
|
+
resp = call(:GetLastReplayBufferReplay)
|
758
758
|
Mixin::Response.new(resp, resp.keys)
|
759
759
|
end
|
760
760
|
|
761
761
|
def get_output_list
|
762
|
-
resp = call(
|
762
|
+
resp = call(:GetOutputList)
|
763
763
|
Mixin::Response.new(resp, resp.keys)
|
764
764
|
end
|
765
765
|
|
766
766
|
def get_output_status(name)
|
767
|
-
payload = {
|
768
|
-
resp = call(
|
767
|
+
payload = {outputName: name}
|
768
|
+
resp = call(:GetOutputStatus, payload)
|
769
769
|
Mixin::Response.new(resp, resp.keys)
|
770
770
|
end
|
771
771
|
|
772
772
|
def toggle_output(name)
|
773
|
-
payload = {
|
774
|
-
resp = call(
|
773
|
+
payload = {outputName: name}
|
774
|
+
resp = call(:ToggleOutput, payload)
|
775
775
|
Mixin::Response.new(resp, resp.keys)
|
776
776
|
end
|
777
777
|
|
778
778
|
def start_output(name)
|
779
|
-
payload = {
|
780
|
-
call(
|
779
|
+
payload = {outputName: name}
|
780
|
+
call(:StartOutput, payload)
|
781
781
|
end
|
782
782
|
|
783
783
|
def stop_output(name)
|
784
|
-
payload = {
|
785
|
-
call(
|
784
|
+
payload = {outputName: name}
|
785
|
+
call(:StopOutput, payload)
|
786
786
|
end
|
787
787
|
|
788
788
|
def get_output_settings(name)
|
789
|
-
payload = {
|
790
|
-
resp = call(
|
789
|
+
payload = {outputName: name}
|
790
|
+
resp = call(:GetOutputSettings, payload)
|
791
791
|
Mixin::Response.new(resp, resp.keys)
|
792
792
|
end
|
793
793
|
|
794
794
|
def set_output_settings(name, settings)
|
795
|
-
payload = {
|
796
|
-
call(
|
795
|
+
payload = {outputName: name, outputSettings: settings}
|
796
|
+
call(:SetOutputSettings, payload)
|
797
797
|
end
|
798
798
|
|
799
799
|
def get_stream_status
|
800
|
-
resp = call(
|
800
|
+
resp = call(:GetStreamStatus)
|
801
801
|
Mixin::Response.new(resp, resp.keys)
|
802
802
|
end
|
803
803
|
|
804
804
|
def toggle_stream
|
805
|
-
resp = call(
|
805
|
+
resp = call(:ToggleStream)
|
806
806
|
Mixin::Response.new(resp, resp.keys)
|
807
807
|
end
|
808
808
|
|
809
809
|
def start_stream
|
810
|
-
call(
|
810
|
+
call(:StartStream)
|
811
811
|
end
|
812
812
|
|
813
813
|
def stop_stream
|
814
|
-
call(
|
814
|
+
call(:StopStream)
|
815
815
|
end
|
816
816
|
|
817
817
|
def send_stream_caption(caption)
|
818
|
-
call(
|
818
|
+
call(:SendStreamCaption)
|
819
819
|
end
|
820
820
|
|
821
821
|
def get_record_status
|
822
|
-
resp = call(
|
822
|
+
resp = call(:GetRecordStatus)
|
823
823
|
Mixin::Response.new(resp, resp.keys)
|
824
824
|
end
|
825
825
|
|
826
826
|
def toggle_record
|
827
|
-
call(
|
827
|
+
call(:ToggleRecord)
|
828
828
|
end
|
829
829
|
|
830
830
|
def start_record
|
831
|
-
call(
|
831
|
+
call(:StartRecord)
|
832
832
|
end
|
833
833
|
|
834
834
|
def stop_record
|
835
|
-
resp = call(
|
835
|
+
resp = call(:StopRecord)
|
836
836
|
Mixin::Response.new(resp, resp.keys)
|
837
837
|
end
|
838
838
|
|
839
839
|
def toggle_record_pause
|
840
|
-
call(
|
840
|
+
call(:ToggleRecordPause)
|
841
841
|
end
|
842
842
|
|
843
843
|
def pause_record
|
844
|
-
call(
|
844
|
+
call(:PauseRecord)
|
845
845
|
end
|
846
846
|
|
847
847
|
def resume_record
|
848
|
-
call(
|
848
|
+
call(:ResumeRecord)
|
849
849
|
end
|
850
850
|
|
851
851
|
def get_media_input_status(name)
|
852
|
-
payload = {
|
853
|
-
resp = call(
|
852
|
+
payload = {inputName: name}
|
853
|
+
resp = call(:GetMediaInputStatus, payload)
|
854
854
|
Mixin::Response.new(resp, resp.keys)
|
855
855
|
end
|
856
856
|
|
857
857
|
def set_media_input_cursor(name, cursor)
|
858
|
-
payload = {
|
859
|
-
call(
|
858
|
+
payload = {inputName: name, mediaCursor: cursor}
|
859
|
+
call(:SetMediaInputCursor, payload)
|
860
860
|
end
|
861
861
|
|
862
862
|
def offset_media_input_cursor(name, offset)
|
863
|
-
payload = {
|
864
|
-
call(
|
863
|
+
payload = {inputName: name, mediaCursorOffset: offset}
|
864
|
+
call(:OffsetMediaInputCursor, payload)
|
865
865
|
end
|
866
866
|
|
867
867
|
def trigger_media_input_action(name, action)
|
868
|
-
payload = {
|
869
|
-
call(
|
868
|
+
payload = {inputName: name, mediaAction: action}
|
869
|
+
call(:TriggerMediaInputAction, payload)
|
870
870
|
end
|
871
871
|
|
872
872
|
def get_studio_mode_enabled
|
873
|
-
resp = call(
|
873
|
+
resp = call(:GetStudioModeEnabled)
|
874
874
|
Mixin::Response.new(resp, resp.keys)
|
875
875
|
end
|
876
876
|
|
877
877
|
def set_studio_mode_enabled(enabled)
|
878
|
-
payload = {
|
879
|
-
call(
|
878
|
+
payload = {studioModeEnabled: enabled}
|
879
|
+
call(:SetStudioModeEnabled, payload)
|
880
880
|
end
|
881
881
|
|
882
882
|
def open_input_properties_dialog(name)
|
883
|
-
payload = {
|
884
|
-
call(
|
883
|
+
payload = {inputName: name}
|
884
|
+
call(:OpenInputPropertiesDialog, payload)
|
885
885
|
end
|
886
886
|
|
887
887
|
def open_input_filters_dialog(name)
|
888
|
-
payload = {
|
889
|
-
call(
|
888
|
+
payload = {inputName: name}
|
889
|
+
call(:OpenInputFiltersDialog, payload)
|
890
890
|
end
|
891
891
|
|
892
892
|
def open_input_interact_dialog(name)
|
893
|
-
payload = {
|
894
|
-
call(
|
893
|
+
payload = {inputName: name}
|
894
|
+
call(:OpenInputInteractDialog, payload)
|
895
895
|
end
|
896
896
|
|
897
897
|
def get_monitor_list
|
898
|
-
resp = call(
|
898
|
+
resp = call(:GetMonitorList)
|
899
899
|
Mixin::Response.new(resp, resp.keys)
|
900
900
|
end
|
901
901
|
end
|
data/lib/obsws/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: obsws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- onyx_online
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: observer
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.2.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: standard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '1.30'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '1.30'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ homepage: https://rubygems.org/gems/obsws
|
|
130
130
|
licenses:
|
131
131
|
- MIT
|
132
132
|
metadata:
|
133
|
-
source_code_uri: https://github.com/onyx-and-iris/obsws
|
133
|
+
source_code_uri: https://github.com/onyx-and-iris/obsws-ruby
|
134
134
|
post_install_message:
|
135
135
|
rdoc_options: []
|
136
136
|
require_paths:
|
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
149
|
+
rubygems_version: 3.4.10
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: OBS Websocket v5 wrapper
|