package main import ( "log" "github.com/andreykaipov/goobs" "github.com/andreykaipov/goobs/api/requests/inputs" "github.com/andreykaipov/goobs/api/requests/sceneitems" "github.com/andreykaipov/goobs/api/typedefs" ) func main() { // change this password lol! client, err := goobs.New("localhost:4455", goobs.WithPassword("lwihuN0OUVTMeCMM")) if err != nil { panic(err) } defer client.Disconnect() params := sceneitems.NewGetSceneItemListParams().WithSceneName("cmus") scil, err := client.SceneItems.GetSceneItemList(params) if err != nil { panic(err) } out, err := CmusRemoteOutput() if err != nil { panic(err) } artist, err := getAttribute(out, "tag artist ") if err != nil { panic(err) } title, err := getAttribute(out, "tag title ") if err != nil { panic(err) } album, err := getAttribute(out, "tag album ") if err != nil { panic(err) } for i := range scil.SceneItems { if scil.SceneItems[i].SourceName == "Artist" { updateTextItem(client, scil.SceneItems[i], artist) } if scil.SceneItems[i].SourceName == "Song" { updateTextItem(client, scil.SceneItems[i], title) } if scil.SceneItems[i].SourceName == "Album" { updateTextItem(client, scil.SceneItems[i], album) } } } func updateTextItem(client *goobs.Client, sI *typedefs.SceneItem, text string) { params := inputs.NewSetInputSettingsParams().WithInputName(sI.SourceName).WithInputUuid(sI.SourceUuid) params.InputSettings = make(map[string]any) params.InputSettings["text"] = text _, err := client.Inputs.SetInputSettings(params) if err != nil { log.Fatal(err) } }