feat(subsonic): implement getSimilarSongs2.view

closes #195
This commit is contained in:
xavier
2022-02-10 11:50:43 +00:00
committed by sentriz
parent e1cfed7965
commit 92febcffe6
4 changed files with 99 additions and 0 deletions

View File

@@ -32,6 +32,7 @@ type LastFM struct {
Artist Artist `xml:"artist"`
TopTracks TopTracks `xml:"toptracks"`
SimilarTracks SimilarTracks `xml:"similartracks"`
SimilarArtists SimilarArtists `xml:"similarartists"`
}
type Session struct {
@@ -45,6 +46,18 @@ type Error struct {
Value string `xml:",chardata"`
}
type SimilarArtist struct {
XMLName xml.Name `xml:"artist"`
Name string `xml:"name"`
MBID string `xml:"mbid"`
URL string `xml:"url"`
Image []struct {
Text string `xml:",chardata"`
Size string `xml:"size,attr"`
} `xml:"image"`
Streamable string `xml:"streamable"`
}
type Artist struct {
XMLName xml.Name `xml:"artist"`
Name string `xml:"name"`
@@ -92,6 +105,12 @@ type SimilarTracks struct {
Tracks []Track `xml:"track"`
}
type SimilarArtists struct {
XMLName xml.Name `xml:"similarartists"`
Artist string `xml:"artist,attr"`
Artists []Artist `xml:"artist"`
}
type Track struct {
Rank int `xml:"rank,attr"`
Tracks []Track `xml:"track"`
@@ -178,6 +197,19 @@ func TrackGetSimilarTracks(apiKey string, artistName, trackName string) (Similar
}
return resp.SimilarTracks, nil
}
func ArtistGetSimilar(apiKey string, artistName string) (SimilarArtists, error) {
params := url.Values{}
params.Add("method", "artist.getSimilar")
params.Add("api_key", apiKey)
params.Add("artist", artistName)
resp, err := makeRequest("GET", params)
if err != nil {
return SimilarArtists{}, fmt.Errorf("making similar artists GET: %w", err)
}
return resp.SimilarArtists, nil
}
func GetSession(apiKey, secret, token string) (string, error) {
params := url.Values{}
params.Add("method", "auth.getSession")