fix: last.fm API fetch failure
This commit is contained in:
parent
c1f8cbd2f5
commit
b93057d67f
1 changed files with 11 additions and 1 deletions
|
|
@ -11,6 +11,7 @@ import (
|
|||
)
|
||||
|
||||
func GetLastFMData() model.LastFMData {
|
||||
// Fallback data
|
||||
data := model.LastFMData{
|
||||
Song: "api error",
|
||||
Artist: "???",
|
||||
|
|
@ -19,6 +20,7 @@ func GetLastFMData() model.LastFMData {
|
|||
Playing: false,
|
||||
}
|
||||
|
||||
// Send request to URL
|
||||
url := fmt.Sprintf("http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=%s&api_key=%s&format=json&limit=1", os.Getenv("LASTFM_USERNAME"), os.Getenv("LASTFM_API_KEY"))
|
||||
res, err := http.Get(url)
|
||||
if err != nil {
|
||||
|
|
@ -26,22 +28,30 @@ func GetLastFMData() model.LastFMData {
|
|||
return data
|
||||
}
|
||||
|
||||
// Read response
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
slog.Error("Error reading body", slog.Any("error", err))
|
||||
return data
|
||||
}
|
||||
|
||||
// Unmarshal JSON into model
|
||||
var lastfmJSON model.LastFMAPI
|
||||
|
||||
err = json.Unmarshal(body, &lastfmJSON)
|
||||
if err != nil {
|
||||
slog.Error("Error unmarshalling JSON", slog.Any("error", err))
|
||||
return data
|
||||
}
|
||||
|
||||
// Check that the track list isn't nil
|
||||
if lastfmJSON.RecentTracks.TrackList == nil {
|
||||
slog.Warn("No recent tracks returned from last.fm API")
|
||||
return data
|
||||
}
|
||||
|
||||
lastfmData := lastfmJSON.RecentTracks.TrackList[0]
|
||||
|
||||
// Check if track is playing
|
||||
if lastfmData.Attributes != nil {
|
||||
data.Playing = true
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue