ListenBrainz: Fix love import and rate limit check

This commit is contained in:
Philipp Wolfer 2023-11-13 11:42:09 +01:00
parent 161ada7aff
commit aa453e4dc2
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
8 changed files with 101 additions and 33 deletions

View file

@ -22,6 +22,7 @@ THE SOFTWARE.
package listenbrainz
import (
"fmt"
"slices"
"time"
@ -113,6 +114,7 @@ func (b ListenBrainzApiBackend) ImportLoves(loves []models.Love, oldestTimestamp
TotalCount: len(loves),
ImportCount: 0,
LastTimestamp: oldestTimestamp,
ImportErrors: make([]string, 0),
}
for _, love := range loves {
if love.Created.Unix() <= oldestTimestamp.Unix() {
@ -121,16 +123,20 @@ func (b ListenBrainzApiBackend) ImportLoves(loves []models.Love, oldestTimestamp
// TODO: Support love import without recording MBID
if love.RecordingMbid != "" {
_, err := b.client.SendFeedback(Feedback{
resp, err := b.client.SendFeedback(Feedback{
RecordingMbid: string(love.RecordingMbid),
Score: 1,
})
if err != nil {
if err == nil && resp.Status == "ok" {
result.ImportCount += 1
if love.Created.Unix() > result.LastTimestamp.Unix() {
result.LastTimestamp = love.Created
}
} else {
msg := fmt.Sprintf("Failed import of \"%s\" by %s: %v",
love.TrackName, love.ArtistName(), err.Error())
result.ImportErrors = append(result.ImportErrors, msg)
}
}
}
@ -166,17 +172,22 @@ func (f Feedback) ToLove() models.Love {
RecordingMbid: recordingMbid,
Created: time.Unix(f.Created, 0),
Track: models.Track{
TrackName: track.TrackName,
ReleaseName: track.ReleaseName,
ArtistNames: []string{track.ArtistName},
RecordingMbid: recordingMbid,
ReleaseMbid: models.MBID(track.MbidMapping.ReleaseMbid),
ArtistMbids: make([]models.MBID, 0, len(track.MbidMapping.ArtistMbids)),
},
}
for _, artistMbid := range track.MbidMapping.ArtistMbids {
love.Track.ArtistMbids = append(love.Track.ArtistMbids, models.MBID(artistMbid))
if track != nil {
love.Track.TrackName = track.TrackName
love.Track.ReleaseName = track.ReleaseName
love.ArtistNames = []string{track.ArtistName}
love.ReleaseMbid = models.MBID(track.MbidMapping.ReleaseMbid)
love.ArtistMbids = make([]models.MBID, 0, len(track.MbidMapping.ArtistMbids))
if track.MbidMapping != nil {
for _, artistMbid := range track.MbidMapping.ArtistMbids {
love.Track.ArtistMbids = append(love.Track.ArtistMbids, models.MBID(artistMbid))
}
}
}
return love