mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-30 21:57:06 +02:00
ListenBrainz: Fix love import and rate limit check
This commit is contained in:
parent
161ada7aff
commit
aa453e4dc2
8 changed files with 101 additions and 33 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue