package main import ( "fmt" "log" "net/http" "reflect" ) type PlayingInfo struct { artistName string recordingName string releaseName string recordingUrl string coverUrl string } func main() { playingInfo := PlayingInfo{} playingNow, err := getPlayingNow("confuseddbread") if err != nil { panic(err) } 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) } playingInfo.recordingUrl = fmt.Sprintf("https://musicbrainz.org/recording/%s", metadata.RecordingMbid) coverArt, err := getCover(metadata.ReleaseMbid) playingInfo.coverUrl = coverArt.Images[0].Image v := reflect.ValueOf(playingInfo) k := v.Type() for i := range v.NumField() { log.Printf("%s: %s\n", k.Field(i).Name, v.Field(i)) } http.HandleFunc("/", playingInfo.handler) log.Println("http://localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }