feat(subsonic): implement getSimilarSongs.view

closes #195
This commit is contained in:
xavier
2022-02-10 11:50:22 +00:00
committed by sentriz
parent 39b3ae5ecb
commit e1cfed7965
4 changed files with 89 additions and 0 deletions

View File

@@ -31,6 +31,7 @@ type LastFM struct {
Error Error `xml:"error"`
Artist Artist `xml:"artist"`
TopTracks TopTracks `xml:"toptracks"`
SimilarTracks SimilarTracks `xml:"similartracks"`
}
type Session struct {
@@ -84,6 +85,13 @@ type TopTracks struct {
Tracks []Track `xml:"track"`
}
type SimilarTracks struct {
XMLName xml.Name `xml:"similartracks"`
Artist string `xml:"artist,attr"`
Track string `xml:"track,attr"`
Tracks []Track `xml:"track"`
}
type Track struct {
Rank int `xml:"rank,attr"`
Tracks []Track `xml:"track"`
@@ -158,6 +166,18 @@ func ArtistGetTopTracks(apiKey, artistName string) (TopTracks, error) {
return resp.TopTracks, nil
}
func TrackGetSimilarTracks(apiKey string, artistName, trackName string) (SimilarTracks, error) {
params := url.Values{}
params.Add("method", "track.getSimilar")
params.Add("api_key", apiKey)
params.Add("track", trackName)
params.Add("artist", artistName)
resp, err := makeRequest("GET", params)
if err != nil {
return SimilarTracks{}, fmt.Errorf("making track GET: %w", err)
}
return resp.SimilarTracks, nil
}
func GetSession(apiKey, secret, token string) (string, error) {
params := url.Values{}
params.Add("method", "auth.getSession")