Skip to content

Commit

Permalink
feat(listenbrainz): submit release MBID (#443)
Browse files Browse the repository at this point in the history
  • Loading branch information
phw committed Dec 29, 2023
1 parent f5b6b4d commit 552aa3a
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 13 deletions.
1 change: 1 addition & 0 deletions listenbrainz/listenbrainz.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
Expand Down
13 changes: 7 additions & 6 deletions listenbrainz/listenbrainz_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions listenbrainz/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
}
Expand Down
1 change: 1 addition & 0 deletions listenbrainz/testdata/submit_listens_request.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
15 changes: 8 additions & 7 deletions scrobble/scrobble.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
3 changes: 3 additions & 0 deletions server/ctrlsubsonic/handlers_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 552aa3a

Please sign in to comment.