feat(lastfm): add user get loved tracks method

This commit is contained in:
sentriz
2023-09-25 23:51:12 +01:00
parent d203cc267b
commit 9026c9e2c0
2 changed files with 24 additions and 0 deletions

View File

@@ -122,6 +122,19 @@ func (c *Client) ArtistGetSimilar(apiKey string, artistName string) (SimilarArti
return resp.SimilarArtists, nil
}
func (c *Client) UserGetLovedTracks(apiKey string, userName string) (LovedTracks, error) {
params := url.Values{}
params.Add("method", "user.getLovedTracks")
params.Add("api_key", apiKey)
params.Add("user", userName)
params.Add("limit", "1000") // TODO: paginate
resp, err := c.makeRequest("GET", params)
if err != nil {
return LovedTracks{}, fmt.Errorf("making lovedTracks users GET: %w", err)
}
return resp.LovedTracks, nil
}
func (c *Client) GetSession(apiKey, secret, token string) (string, error) {
params := url.Values{}
params.Add("method", "auth.getSession")

View File

@@ -12,6 +12,7 @@ type (
TopTracks TopTracks `xml:"toptracks"`
SimilarTracks SimilarTracks `xml:"similartracks"`
SimilarArtists SimilarArtists `xml:"similarartists"`
LovedTracks LovedTracks `xml:"lovedtracks"`
}
Session struct {
@@ -99,4 +100,14 @@ type (
URL string `xml:"url"`
Image []Image `xml:"image"`
}
TrackWithArtist struct {
Track
Artist Artist `xml:"artist"`
}
LovedTracks struct {
XMLName xml.Name `xml:"lovedtracks"`
Tracks []TrackWithArtist `xml:"track"`
}
)