fix(listenbrainz): set track length submission and include submission client details (#424)

* Fixed ListenBrainz track duration submission

* Include submission client info in ListenBrainz payload

* Extended ListenBrainz test
This commit is contained in:
Philipp Wolfer
2023-12-10 15:31:55 +01:00
committed by GitHub
parent 688f9d3be5
commit b27c02fc89
4 changed files with 22 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ import (
"net/http/httputil" "net/http/httputil"
"time" "time"
"go.senan.xyz/gonic"
"go.senan.xyz/gonic/db" "go.senan.xyz/gonic/db"
"go.senan.xyz/gonic/scrobble" "go.senan.xyz/gonic/scrobble"
) )
@@ -44,9 +45,10 @@ func (c *Client) Scrobble(user db.User, track scrobble.Track, stamp time.Time, s
payload := &Payload{ payload := &Payload{
TrackMetadata: &TrackMetadata{ TrackMetadata: &TrackMetadata{
AdditionalInfo: &AdditionalInfo{ AdditionalInfo: &AdditionalInfo{
TrackNumber: int(track.TrackNumber), TrackNumber: int(track.TrackNumber),
RecordingMBID: track.MusicBrainzID, RecordingMBID: track.MusicBrainzID,
TrackLength: int(track.Duration.Seconds()), Duration: int(track.Duration.Seconds()),
SubmissionClient: gonic.Name,
}, },
ArtistName: track.Artist, ArtistName: track.Artist,
TrackName: track.Track, TrackName: track.Track,

View File

@@ -37,7 +37,14 @@ func TestScrobble(t *testing.T) {
err := client.Scrobble( err := client.Scrobble(
db.User{ListenBrainzURL: "https://listenbrainz.org", ListenBrainzToken: "token1"}, db.User{ListenBrainzURL: "https://listenbrainz.org", ListenBrainzToken: "token1"},
scrobble.Track{Track: "title", Artist: "artist", Album: "album", TrackNumber: 1}, scrobble.Track{
Track: "title",
Artist: "artist",
Album: "album",
TrackNumber: 1,
Duration: 242 * time.Second,
MusicBrainzID: "00000000-0000-0000-0000-000000000000",
},
time.Unix(1683804525, 0), time.Unix(1683804525, 0),
true, true,
) )

View File

@@ -9,10 +9,11 @@ type (
} }
AdditionalInfo struct { AdditionalInfo struct {
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"`
TrackLength int `json:"track_length,omitempty"` Duration int `json:"duration,omitempty"`
SubmissionClient string `json:"submission_client,omitempty"`
} }
TrackMetadata struct { TrackMetadata struct {

View File

@@ -5,7 +5,10 @@
"listened_at": 1683804525, "listened_at": 1683804525,
"track_metadata": { "track_metadata": {
"additional_info": { "additional_info": {
"tracknumber": 1 "tracknumber": 1,
"duration": 242,
"recording_mbid": "00000000-0000-0000-0000-000000000000",
"submission_client": "gonic"
}, },
"artist_name": "artist", "artist_name": "artist",
"track_name": "title", "track_name": "title",