backend/main.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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))
}
|