diff --git a/electricboogaloo b/electricboogaloo index 71b0f61..212cd1d 100755 Binary files a/electricboogaloo and b/electricboogaloo differ diff --git a/main.go b/main.go index 8521f3b..f3f19a8 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "log" + "time" "github.com/andreykaipov/goobs" "github.com/andreykaipov/goobs/api/requests/inputs" @@ -11,13 +12,13 @@ import ( /* TODO: 1. Set password with a flag instead of text in the code -2. Loop output 3. Change Panic(err) to code that doesn't crash the program if it fails 4. Document functions */ func main() { // change this password lol! + sleepTime := 2.0 client, err := goobs.New("localhost:4455", goobs.WithPassword("lwihuN0OUVTMeCMM")) if err != nil { panic(err) @@ -33,38 +34,56 @@ func main() { if err != nil { panic(err) } - - artist, err := getAttribute(out, "tag artist ", "tag albumartist ", "tag composer ") - 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) - } path, err := getAttribute(out, "file ") if err != nil { panic(err) } - art, err := retrieveArt(path) - artFile, err := writeArtFile(art) - for i := range scil.SceneItems { - if scil.SceneItems[i].SourceName == "Artist" { - updateItem(client, scil.SceneItems[i], artist, "text") + var prevPath string + for { + out, err = CmusRemoteOutput() + if err != nil { + panic(err) } - if scil.SceneItems[i].SourceName == "Song" { - updateItem(client, scil.SceneItems[i], title, "text") + path, err = getAttribute(out, "file ") + if err != nil { + panic(err) } - if scil.SceneItems[i].SourceName == "Album" { - updateItem(client, scil.SceneItems[i], album, "text") - } - if scil.SceneItems[i].SourceName == "Art" { - updateItem(client, scil.SceneItems[i], artFile, "file") + if path != prevPath { + artist, err := getAttribute(out, "tag artist ", "tag albumartist ", "tag composer ") + if err != nil { + log.Printf("%v does not have an artist listed.", path) + artist = "Unknown" + } + title, err := getAttribute(out, "tag title ") + if err != nil { + log.Printf("%v does not have an title listed.", path) + title = "Unknown" + } + album, err := getAttribute(out, "tag album ") + if err != nil { + log.Printf("%v does not have an album listed.", path) + album = "Single" + } + + art, err := retrieveArt(path) + artFile, err := writeArtFile(art) + for i := range scil.SceneItems { + if scil.SceneItems[i].SourceName == "Artist" { + updateItem(client, scil.SceneItems[i], artist, "text") + } + if scil.SceneItems[i].SourceName == "Song" { + updateItem(client, scil.SceneItems[i], title, "text") + } + if scil.SceneItems[i].SourceName == "Album" { + updateItem(client, scil.SceneItems[i], album, "text") + } + if scil.SceneItems[i].SourceName == "Art" { + updateItem(client, scil.SceneItems[i], artFile, "file") + } + } } + time.Sleep(time.Duration(sleepTime) * time.Second) + prevPath = path } }