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{
|
AdditionalInfo: &AdditionalInfo{
|
||||||
TrackNumber: int(track.TrackNumber),
|
TrackNumber: int(track.TrackNumber),
|
||||||
RecordingMBID: track.MusicBrainzID,
|
RecordingMBID: track.MusicBrainzID,
|
||||||
|
ReleaseMBID: track.MusicBrainzReleaseID,
|
||||||
Duration: int(track.Duration.Seconds()),
|
Duration: int(track.Duration.Seconds()),
|
||||||
SubmissionClient: gonic.Name,
|
SubmissionClient: gonic.Name,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ func TestScrobble(t *testing.T) {
|
|||||||
TrackNumber: 1,
|
TrackNumber: 1,
|
||||||
Duration: 242 * time.Second,
|
Duration: 242 * time.Second,
|
||||||
MusicBrainzID: "00000000-0000-0000-0000-000000000000",
|
MusicBrainzID: "00000000-0000-0000-0000-000000000000",
|
||||||
|
MusicBrainzReleaseID: "00000000-0000-0000-0000-000000000001",
|
||||||
},
|
},
|
||||||
time.Unix(1683804525, 0),
|
time.Unix(1683804525, 0),
|
||||||
true,
|
true,
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ type (
|
|||||||
TrackNumber int `json:"tracknumber,omitempty"`
|
TrackNumber int `json:"tracknumber,omitempty"`
|
||||||
TrackMBID string `json:"track_mbid,omitempty"`
|
TrackMBID string `json:"track_mbid,omitempty"`
|
||||||
RecordingMBID string `json:"recording_mbid,omitempty"`
|
RecordingMBID string `json:"recording_mbid,omitempty"`
|
||||||
|
ReleaseMBID string `json:"release_mbid,omitempty"`
|
||||||
Duration int `json:"duration,omitempty"`
|
Duration int `json:"duration,omitempty"`
|
||||||
SubmissionClient string `json:"submission_client,omitempty"`
|
SubmissionClient string `json:"submission_client,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"tracknumber": 1,
|
"tracknumber": 1,
|
||||||
"duration": 242,
|
"duration": 242,
|
||||||
"recording_mbid": "00000000-0000-0000-0000-000000000000",
|
"recording_mbid": "00000000-0000-0000-0000-000000000000",
|
||||||
|
"release_mbid": "00000000-0000-0000-0000-000000000001",
|
||||||
"submission_client": "gonic"
|
"submission_client": "gonic"
|
||||||
},
|
},
|
||||||
"artist_name": "artist",
|
"artist_name": "artist",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ type Track struct {
|
|||||||
TrackNumber uint
|
TrackNumber uint
|
||||||
Duration time.Duration
|
Duration time.Duration
|
||||||
MusicBrainzID string
|
MusicBrainzID string
|
||||||
|
MusicBrainzReleaseID string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Scrobbler interface {
|
type Scrobbler interface {
|
||||||
|
|||||||
@@ -78,6 +78,9 @@ func (c *Controller) ServeScrobble(r *http.Request) *spec.Response {
|
|||||||
if _, err := uuid.Parse(track.TagBrainzID); err == nil {
|
if _, err := uuid.Parse(track.TagBrainzID); err == nil {
|
||||||
scrobbleTrack.MusicBrainzID = track.TagBrainzID
|
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 {
|
if err := scrobbleStatsUpdateTrack(c.dbc, &track, user.ID, optStamp); err != nil {
|
||||||
return spec.NewError(0, "error updating stats: %v", err)
|
return spec.NewError(0, "error updating stats: %v", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user