mirror of
https://github.com/onyx-and-iris/gobs-cli.git
synced 2026-04-18 07:03:37 +00:00
first commit
This commit is contained in:
114
input.go
Normal file
114
input.go
Normal file
@@ -0,0 +1,114 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/andreykaipov/goobs/api/requests/inputs"
|
||||
)
|
||||
|
||||
// InputCmd provides commands to manage inputs in OBS Studio.
|
||||
type InputCmd struct {
|
||||
List InputListCmd `cmd:"" help:"List all inputs." aliases:"ls"`
|
||||
Mute InputMuteCmd `cmd:"" help:"Mute input." aliases:"m"`
|
||||
Unmute InputUnmuteCmd `cmd:"" help:"Unmute input." aliases:"um"`
|
||||
Toggle InputToggleCmd `cmd:"" help:"Toggle input." aliases:"tg"`
|
||||
}
|
||||
|
||||
// InputListCmd provides a command to list all inputs.
|
||||
type InputListCmd struct {
|
||||
Input bool `flag:"" help:"List all inputs." aliases:"i"`
|
||||
Output bool `flag:"" help:"List all outputs." aliases:"o"`
|
||||
Colour bool `flag:"" help:"List all colour sources." aliases:"c"`
|
||||
}
|
||||
|
||||
// Run executes the command to list all inputs.
|
||||
func (cmd *InputListCmd) Run(ctx *context) error {
|
||||
resp, err := ctx.Client.Inputs.GetInputList(inputs.NewGetInputListParams())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, input := range resp.Inputs {
|
||||
if cmd.Input && strings.Contains(input.InputKind, "input") {
|
||||
fmt.Fprintln(ctx.Out, "Input:", input.InputName)
|
||||
}
|
||||
if cmd.Output && strings.Contains(input.InputKind, "output") {
|
||||
fmt.Fprintln(ctx.Out, "Output:", input.InputName)
|
||||
}
|
||||
if cmd.Colour && strings.Contains(input.InputKind, "color") { // nolint
|
||||
fmt.Fprintln(ctx.Out, "Colour Source:", input.InputName)
|
||||
}
|
||||
|
||||
if !cmd.Input && !cmd.Output && !cmd.Colour {
|
||||
fmt.Fprintln(ctx.Out, "Source:", input.InputName)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// InputMuteCmd provides a command to mute an input.
|
||||
type InputMuteCmd struct {
|
||||
InputName string `arg:"" help:"Name of the input to mute."`
|
||||
}
|
||||
|
||||
// Run executes the command to mute an input.
|
||||
func (cmd *InputMuteCmd) Run(ctx *context) error {
|
||||
_, err := ctx.Client.Inputs.SetInputMute(
|
||||
inputs.NewSetInputMuteParams().WithInputName(cmd.InputName).WithInputMuted(true),
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to mute input: %w", err)
|
||||
}
|
||||
|
||||
fmt.Fprintf(ctx.Out, "Muted input: %s\n", cmd.InputName)
|
||||
return nil
|
||||
}
|
||||
|
||||
// InputUnmuteCmd provides a command to unmute an input.
|
||||
type InputUnmuteCmd struct {
|
||||
InputName string `arg:"" help:"Name of the input to unmute."`
|
||||
}
|
||||
|
||||
// Run executes the command to unmute an input.
|
||||
func (cmd *InputUnmuteCmd) Run(ctx *context) error {
|
||||
_, err := ctx.Client.Inputs.SetInputMute(
|
||||
inputs.NewSetInputMuteParams().WithInputName(cmd.InputName).WithInputMuted(false),
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to unmute input: %w", err)
|
||||
}
|
||||
|
||||
fmt.Fprintf(ctx.Out, "Unmuted input: %s\n", cmd.InputName)
|
||||
return nil
|
||||
}
|
||||
|
||||
// InputToggleCmd provides a command to toggle the mute state of an input.
|
||||
type InputToggleCmd struct {
|
||||
InputName string `arg:"" help:"Name of the input to toggle."`
|
||||
}
|
||||
|
||||
// Run executes the command to toggle the mute state of an input.
|
||||
func (cmd *InputToggleCmd) Run(ctx *context) error {
|
||||
// Get the current mute state of the input
|
||||
resp, err := ctx.Client.Inputs.GetInputMute(
|
||||
inputs.NewGetInputMuteParams().WithInputName(cmd.InputName),
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get input mute state: %w", err)
|
||||
}
|
||||
// Toggle the mute state
|
||||
newMuteState := !resp.InputMuted
|
||||
_, err = ctx.Client.Inputs.SetInputMute(
|
||||
inputs.NewSetInputMuteParams().WithInputName(cmd.InputName).WithInputMuted(newMuteState),
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to toggle input mute state: %w", err)
|
||||
}
|
||||
|
||||
if newMuteState {
|
||||
fmt.Fprintf(ctx.Out, "Muted input: %s\n", cmd.InputName)
|
||||
} else {
|
||||
fmt.Fprintf(ctx.Out, "Unmuted input: %s\n", cmd.InputName)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user