From 9da013f33922a3312b741b8d6a60a5abb7f43682 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Sat, 17 Jun 2023 18:27:00 +0200 Subject: [PATCH] Submit duration to ListenBrainz (#2405) --- core/agents/listenbrainz/agent.go | 1 + core/agents/listenbrainz/agent_test.go | 2 ++ core/agents/listenbrainz/client.go | 1 + core/agents/listenbrainz/client_test.go | 1 + tests/fixtures/listenbrainz.nowplaying.request.json | 2 +- tests/fixtures/listenbrainz.scrobble.request.json | 2 +- 6 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/agents/listenbrainz/agent.go b/core/agents/listenbrainz/agent.go index 71378f12..3e1446a2 100644 --- a/core/agents/listenbrainz/agent.go +++ b/core/agents/listenbrainz/agent.go @@ -57,6 +57,7 @@ func (l *listenBrainzAgent) formatListen(track *model.MediaFile) listenInfo { ArtistMbzIDs: []string{track.MbzArtistID}, RecordingMbzID: track.MbzRecordingID, ReleaseMbID: track.MbzAlbumID, + DurationMs: int(track.Duration * 1000), }, }, } diff --git a/core/agents/listenbrainz/agent_test.go b/core/agents/listenbrainz/agent_test.go index 9c3a0b2f..c521e19b 100644 --- a/core/agents/listenbrainz/agent_test.go +++ b/core/agents/listenbrainz/agent_test.go @@ -40,6 +40,7 @@ var _ = Describe("listenBrainzAgent", func() { MbzRecordingID: "mbz-123", MbzAlbumID: "mbz-456", MbzArtistID: "mbz-789", + Duration: 142.2, } }) @@ -65,6 +66,7 @@ var _ = Describe("listenBrainzAgent", func() { "ArtistMbzIDs": MatchAllElements(idArtistId, Elements{ "mbz-789": Equal(track.MbzArtistID), }), + "DurationMs": Equal(142200), }), }), })) diff --git a/core/agents/listenbrainz/client.go b/core/agents/listenbrainz/client.go index 32c6b184..5a069154 100644 --- a/core/agents/listenbrainz/client.go +++ b/core/agents/listenbrainz/client.go @@ -79,6 +79,7 @@ type additionalInfo struct { RecordingMbzID string `json:"recording_mbid,omitempty"` ArtistMbzIDs []string `json:"artist_mbids,omitempty"` ReleaseMbID string `json:"release_mbid,omitempty"` + DurationMs int `json:"duration_ms,omitempty"` } func (c *client) validateToken(ctx context.Context, apiKey string) (*listenBrainzResponse, error) { diff --git a/core/agents/listenbrainz/client_test.go b/core/agents/listenbrainz/client_test.go index 6d1bced3..82eb4b63 100644 --- a/core/agents/listenbrainz/client_test.go +++ b/core/agents/listenbrainz/client_test.go @@ -78,6 +78,7 @@ var _ = Describe("client", func() { RecordingMbzID: "mbz-123", ArtistMbzIDs: []string{"mbz-789"}, ReleaseMbID: "mbz-456", + DurationMs: 142200, }, }, } diff --git a/tests/fixtures/listenbrainz.nowplaying.request.json b/tests/fixtures/listenbrainz.nowplaying.request.json index 2ed3dfe3..13f002d3 100644 --- a/tests/fixtures/listenbrainz.nowplaying.request.json +++ b/tests/fixtures/listenbrainz.nowplaying.request.json @@ -1 +1 @@ - {"listen_type": "playing_now", "payload": [{"track_metadata": { "artist_name": "Track Artist", "track_name": "Track Title", "release_name": "Track Album", "additional_info": { "tracknumber": 1, "recording_mbid": "mbz-123", "artist_mbids": ["mbz-789"], "release_mbid": "mbz-456"}}}]} + {"listen_type": "playing_now", "payload": [{"track_metadata": { "artist_name": "Track Artist", "track_name": "Track Title", "release_name": "Track Album", "additional_info": { "tracknumber": 1, "recording_mbid": "mbz-123", "artist_mbids": ["mbz-789"], "release_mbid": "mbz-456", "duration_ms": 142200}}}]} diff --git a/tests/fixtures/listenbrainz.scrobble.request.json b/tests/fixtures/listenbrainz.scrobble.request.json index 40435080..98bfaee5 100644 --- a/tests/fixtures/listenbrainz.scrobble.request.json +++ b/tests/fixtures/listenbrainz.scrobble.request.json @@ -1 +1 @@ - {"listen_type": "single", "payload": [{"listened_at": 1635000000, "track_metadata": { "artist_name": "Track Artist", "track_name": "Track Title", "release_name": "Track Album", "additional_info": { "tracknumber": 1, "recording_mbid": "mbz-123", "artist_mbids": ["mbz-789"], "release_mbid": "mbz-456"}}}]} + {"listen_type": "single", "payload": [{"listened_at": 1635000000, "track_metadata": { "artist_name": "Track Artist", "track_name": "Track Title", "release_name": "Track Album", "additional_info": { "tracknumber": 1, "recording_mbid": "mbz-123", "artist_mbids": ["mbz-789"], "release_mbid": "mbz-456", "duration_ms": 142200}}}]}