add fallback for artist Top Tracks when server returns none

This commit is contained in:
Drew Weymouth
2024-06-26 08:28:24 -07:00
parent d9cec2e493
commit 2b39c6ba66
3 changed files with 21 additions and 0 deletions
+15
View File
@@ -2,6 +2,7 @@ package helpers
import (
"fmt"
"sort"
"github.com/dweymouth/supersonic/backend/mediaprovider"
"github.com/dweymouth/supersonic/sharedutil"
@@ -37,3 +38,17 @@ func GetArtistTracks(mp mediaprovider.MediaProvider, artistID string) ([]*mediap
}
return allTracks, nil
}
func GetTopTracksFallback(mp mediaprovider.MediaProvider, artistID string, count int) ([]*mediaprovider.Track, error) {
tracks, err := GetArtistTracks(mp, artistID)
if err != nil {
return nil, err
}
sort.Slice(tracks, func(i, j int) bool {
return tracks[i].PlayCount > tracks[j].PlayCount
})
if len(tracks) > count {
return tracks[:count], nil
}
return tracks, nil
}