package main import ( "fmt" "log" "net/http" ) type PlayingInfo struct { playing bool artistName string recordingName string releaseName string recordingUrl string coverUrl string } func getInfo() PlayingInfo { playingInfo := PlayingInfo{} playingNow, err := getPlayingNow("confuseddbread") if err != nil { panic(err) } if len(playingNow.Payload.Listens) == 0 { playingInfo.playing = false return playingInfo } else { playingInfo.playing = true } trackMetadata := playingNow.Payload.Listens[0].TrackMetadata playingInfo.artistName = trackMetadata.ArtistName playingInfo.recordingName = trackMetadata.TrackName playingInfo.releaseName = trackMetadata.ReleaseName metadata, err := getMetadata(trackMetadata.ArtistName, trackMetadata.TrackName, trackMetadata.ReleaseName) if err != nil { log.Fatalf("error: %s\n", err) } if metadata.RecordingMbid == "" { log.Println("no song metadata found") return playingInfo } playingInfo.recordingUrl = fmt.Sprintf("https://musicbrainz.org/recording/%s", metadata.RecordingMbid) coverArt, err := getCover(metadata.ReleaseMbid) playingInfo.coverUrl = coverArt return playingInfo } func main() { http.HandleFunc("/now-playing", nowPlayingHandler) http.HandleFunc("/boop", boopHandler) log.Println("http://localhost:5050") log.Fatal(http.ListenAndServe(":5050", nil)) }