@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user