add love track method to lastfm

This commit is contained in:
sentriz
2023-09-26 01:40:40 +01:00
parent d77b0ebf4c
commit 81bf36abc1

View File

@@ -20,6 +20,7 @@ type Scrobbler struct {
var _ scrobble.Scrobbler = (*Scrobbler)(nil)
// TODO: remove dependency on db here
func NewScrobbler(db *db.DB, client *Client) *Scrobbler {
return &Scrobbler{
db: db,
@@ -72,3 +73,30 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su
_, err = s.client.makeRequest(http.MethodPost, params)
return err
}
func (s *Scrobbler) LoveTrack(user *db.User, track *db.Track) error {
if user.LastFMSession == "" {
return nil
}
apiKey, err := s.db.GetSetting(db.LastFMAPIKey)
if err != nil {
return fmt.Errorf("get api key: %w", err)
}
secret, err := s.db.GetSetting(db.LastFMSecret)
if err != nil {
return fmt.Errorf("get secret: %w", err)
}
params := url.Values{}
params.Add("method", "track.love")
params.Add("track", track.TagTitle)
params.Add("artist", track.TagTrackArtist)
params.Add("api_key", apiKey)
params.Add("sk", user.LastFMSession)
params.Add("api_sig", getParamSignature(params, secret))
_, err = s.client.makeRequest(http.MethodPost, params)
return err
}