add fallback for artist Top Tracks when server returns none
This commit is contained in:
@@ -2,6 +2,7 @@ package helpers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
|
||||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||||
"github.com/dweymouth/supersonic/sharedutil"
|
"github.com/dweymouth/supersonic/sharedutil"
|
||||||
@@ -37,3 +38,17 @@ func GetArtistTracks(mp mediaprovider.MediaProvider, artistID string) ([]*mediap
|
|||||||
}
|
}
|
||||||
return allTracks, nil
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -182,6 +182,9 @@ func (j *jellyfinMediaProvider) GetTopTracks(artist mediaprovider.Artist, limit
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(tr) == 0 {
|
||||||
|
return helpers.GetTopTracksFallback(j, artist.ID, limit)
|
||||||
|
}
|
||||||
return sharedutil.MapSlice(tr, toTrack), nil
|
return sharedutil.MapSlice(tr, toTrack), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -248,6 +248,9 @@ func (s *subsonicMediaProvider) GetTopTracks(artist mediaprovider.Artist, count
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(tr) == 0 {
|
||||||
|
return helpers.GetTopTracksFallback(s, artist.ID, count)
|
||||||
|
}
|
||||||
return sharedutil.MapSlice(tr, toTrack), nil
|
return sharedutil.MapSlice(tr, toTrack), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user