Skip to content

Commit

Permalink
add love track method to lastfm
Browse files Browse the repository at this point in the history
  • Loading branch information
sentriz committed Sep 26, 2023
1 parent d77b0eb commit 81bf36a
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions scrobble/lastfm/scrobbler.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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
}

0 comments on commit 81bf36a

Please sign in to comment.