feat(listenbrainz): submit release MBID (#443)

This commit is contained in:
Philipp Wolfer
2023-12-29 20:20:14 +01:00
committed by GitHub
parent f5b6b4d790
commit 552aa3afb1
6 changed files with 21 additions and 13 deletions

View File

@@ -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,
},

View File

@@ -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,

View File

@@ -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"`
}

View File

@@ -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",

View File

@@ -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 {

View File

@@ -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)