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:
83
scene.go
Normal file
83
scene.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"slices"
|
||||
|
||||
"github.com/andreykaipov/goobs/api/requests/scenes"
|
||||
)
|
||||
|
||||
// SceneCmd provides commands to manage scenes in OBS Studio.
|
||||
type SceneCmd struct {
|
||||
List SceneListCmd `cmd:"" help:"List all scenes." aliases:"ls"`
|
||||
Current SceneCurrentCmd `cmd:"" help:"Get the current scene." aliases:"c"`
|
||||
Switch SceneSwitchCmd `cmd:"" help:"Switch to a scene." aliases:"sw"`
|
||||
}
|
||||
|
||||
// SceneListCmd provides a command to list all scenes.
|
||||
type SceneListCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to list all scenes.
|
||||
func (cmd *SceneListCmd) Run(ctx *context) error {
|
||||
scenes, err := ctx.Client.Scenes.GetSceneList()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slices.Reverse(scenes.Scenes)
|
||||
for _, scene := range scenes.Scenes {
|
||||
fmt.Fprintln(ctx.Out, scene.SceneName)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SceneCurrentCmd provides a command to get the current scene.
|
||||
type SceneCurrentCmd struct {
|
||||
Preview bool `flag:"" help:"Preview scene."`
|
||||
}
|
||||
|
||||
// Run executes the command to get the current scene.
|
||||
func (cmd *SceneCurrentCmd) Run(ctx *context) error {
|
||||
if cmd.Preview {
|
||||
scene, err := ctx.Client.Scenes.GetCurrentPreviewScene()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(ctx.Out, scene.SceneName)
|
||||
} else {
|
||||
scene, err := ctx.Client.Scenes.GetCurrentProgramScene()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(ctx.Out, scene.SceneName)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SceneSwitchCmd provides a command to switch to a different scene.
|
||||
type SceneSwitchCmd struct {
|
||||
Preview bool `flag:"" help:"Preview scene."`
|
||||
NewScene string ` help:"Scene name to switch to." arg:""`
|
||||
}
|
||||
|
||||
// Run executes the command to switch to a different scene.
|
||||
func (cmd *SceneSwitchCmd) Run(ctx *context) error {
|
||||
if cmd.Preview {
|
||||
_, err := ctx.Client.Scenes.SetCurrentPreviewScene(scenes.NewSetCurrentPreviewSceneParams().
|
||||
WithSceneName(cmd.NewScene))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Fprintln(ctx.Out, "Switched to preview scene:", cmd.NewScene)
|
||||
} else {
|
||||
_, err := ctx.Client.Scenes.SetCurrentProgramScene(scenes.NewSetCurrentProgramSceneParams().
|
||||
WithSceneName(cmd.NewScene))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Fprintln(ctx.Out, "Switched to program scene:", cmd.NewScene)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user