adding OBS support
This commit is contained in:
@@ -56,3 +56,76 @@ modules:
|
||||
exec: |
|
||||
curl -s -X POST https://slack.com/api/dnd.endSnooze \
|
||||
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}"
|
||||
|
||||
# OBS Studio — media player and streaming control via obs-cmd
|
||||
#
|
||||
# Requires: obs-cmd (https://github.com/grigio/obs-cmd)
|
||||
# macOS: brew install grigio/obs-cmd/obs-cmd
|
||||
# Linux: cargo install obs-cmd (or download binary from GitHub releases)
|
||||
#
|
||||
# OBS WebSocket must be enabled: Tools → WebSocket Server Settings (on by default in OBS 28+)
|
||||
#
|
||||
# Add to ~/.config/streamdeck-go/.env:
|
||||
# OBS_WEBSOCKET_PASSWORD=your-password
|
||||
# OBS_HOST=localhost (optional, default: localhost)
|
||||
# OBS_PORT=4455 (optional, default: 4455)
|
||||
obs:
|
||||
play:
|
||||
params:
|
||||
source: "Media Source"
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input play "{{.source}}"
|
||||
|
||||
pause:
|
||||
params:
|
||||
source: "Media Source"
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input pause "{{.source}}"
|
||||
|
||||
stop:
|
||||
params:
|
||||
source: "Media Source"
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input stop "{{.source}}"
|
||||
|
||||
restart:
|
||||
params:
|
||||
source: "Media Source"
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input restart "{{.source}}"
|
||||
|
||||
toggle_record:
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording toggle
|
||||
|
||||
toggle_record_pause:
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording toggle-pause
|
||||
|
||||
is_recording_paused:
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording status
|
||||
|
||||
toggle_stream:
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} streaming toggle
|
||||
|
||||
scene_switch:
|
||||
params:
|
||||
scene: "Scene 1"
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} scene switch "{{.scene}}"
|
||||
|
||||
toggle_mute:
|
||||
params:
|
||||
source: "Mic/Aux"
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} input toggle-mute "{{.source}}"
|
||||
|
||||
is_recording:
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording status
|
||||
|
||||
is_streaming:
|
||||
exec: |
|
||||
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} streaming status
|
||||
|
||||
@@ -100,6 +100,15 @@ func funcMap() template.FuncMap {
|
||||
// Use this to keep secrets (tokens, passwords) out of modules.yaml.
|
||||
"env": os.Getenv,
|
||||
|
||||
// envDefault returns the value of an environment variable, or
|
||||
// fallback if the variable is empty/unset.
|
||||
"envDefault": func(key, fallback string) string {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
return v
|
||||
}
|
||||
return fallback
|
||||
},
|
||||
|
||||
// expiry converts a duration string like "+1h" to a Unix epoch timestamp string.
|
||||
// Pass "" or "0" to get "0" (no expiry). Supports Go duration syntax (e.g. "30m", "2h").
|
||||
// Note: time.ParseDuration does not support days (d) or weeks (w).
|
||||
|
||||
Reference in New Issue
Block a user