feat(listenbrainz): submit release MBID (#443)
This commit is contained in:
@@ -47,6 +47,7 @@ func (c *Client) Scrobble(user db.User, track scrobble.Track, stamp time.Time, s
|
||||
AdditionalInfo: &AdditionalInfo{
|
||||
TrackNumber: int(track.TrackNumber),
|
||||
RecordingMBID: track.MusicBrainzID,
|
||||
ReleaseMBID: track.MusicBrainzReleaseID,
|
||||
Duration: int(track.Duration.Seconds()),
|
||||
SubmissionClient: gonic.Name,
|
||||
},
|
||||
|
||||
@@ -38,12 +38,13 @@ func TestScrobble(t *testing.T) {
|
||||
err := client.Scrobble(
|
||||
db.User{ListenBrainzURL: "https://listenbrainz.org", ListenBrainzToken: "token1"},
|
||||
scrobble.Track{
|
||||
Track: "title",
|
||||
Artist: "artist",
|
||||
Album: "album",
|
||||
TrackNumber: 1,
|
||||
Duration: 242 * time.Second,
|
||||
MusicBrainzID: "00000000-0000-0000-0000-000000000000",
|
||||
Track: "title",
|
||||
Artist: "artist",
|
||||
Album: "album",
|
||||
TrackNumber: 1,
|
||||
Duration: 242 * time.Second,
|
||||
MusicBrainzID: "00000000-0000-0000-0000-000000000000",
|
||||
MusicBrainzReleaseID: "00000000-0000-0000-0000-000000000001",
|
||||
},
|
||||
time.Unix(1683804525, 0),
|
||||
true,
|
||||
|
||||
@@ -12,6 +12,7 @@ type (
|
||||
TrackNumber int `json:"tracknumber,omitempty"`
|
||||
TrackMBID string `json:"track_mbid,omitempty"`
|
||||
RecordingMBID string `json:"recording_mbid,omitempty"`
|
||||
ReleaseMBID string `json:"release_mbid,omitempty"`
|
||||
Duration int `json:"duration,omitempty"`
|
||||
SubmissionClient string `json:"submission_client,omitempty"`
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"tracknumber": 1,
|
||||
"duration": 242,
|
||||
"recording_mbid": "00000000-0000-0000-0000-000000000000",
|
||||
"release_mbid": "00000000-0000-0000-0000-000000000001",
|
||||
"submission_client": "gonic"
|
||||
},
|
||||
"artist_name": "artist",
|
||||
|
||||
@@ -7,13 +7,14 @@ import (
|
||||
)
|
||||
|
||||
type Track struct {
|
||||
Track string
|
||||
Artist string
|
||||
Album string
|
||||
AlbumArtist string
|
||||
TrackNumber uint
|
||||
Duration time.Duration
|
||||
MusicBrainzID string
|
||||
Track string
|
||||
Artist string
|
||||
Album string
|
||||
AlbumArtist string
|
||||
TrackNumber uint
|
||||
Duration time.Duration
|
||||
MusicBrainzID string
|
||||
MusicBrainzReleaseID string
|
||||
}
|
||||
|
||||
type Scrobbler interface {
|
||||
|
||||
@@ -78,6 +78,9 @@ func (c *Controller) ServeScrobble(r *http.Request) *spec.Response {
|
||||
if _, err := uuid.Parse(track.TagBrainzID); err == nil {
|
||||
scrobbleTrack.MusicBrainzID = track.TagBrainzID
|
||||
}
|
||||
if _, err := uuid.Parse(track.Album.TagBrainzID); err == nil {
|
||||
scrobbleTrack.MusicBrainzReleaseID = track.Album.TagBrainzID
|
||||
}
|
||||
|
||||
if err := scrobbleStatsUpdateTrack(c.dbc, &track, user.ID, optStamp); err != nil {
|
||||
return spec.NewError(0, "error updating stats: %v", err)
|
||||
|
||||
Reference in New Issue
Block a user