diff --git a/core/agents/lastfm/agent.go b/core/agents/lastfm/agent.go index f12cf2d00..a108f222b 100644 --- a/core/agents/lastfm/agent.go +++ b/core/agents/lastfm/agent.go @@ -257,7 +257,7 @@ func (l *lastfmAgent) NowPlaying(ctx context.Context, userId string, track *mode track: track.Title, album: track.Album, trackNumber: track.TrackNumber, - mbid: track.MbzTrackID, + mbid: track.MbzRecordingID, duration: int(track.Duration), albumArtist: track.AlbumArtist, }) @@ -283,7 +283,7 @@ func (l *lastfmAgent) Scrobble(ctx context.Context, userId string, s scrobbler.S track: s.Title, album: s.Album, trackNumber: s.TrackNumber, - mbid: s.MbzTrackID, + mbid: s.MbzRecordingID, duration: int(s.Duration), albumArtist: s.AlbumArtist, timestamp: s.TimeStamp, diff --git a/core/agents/lastfm/agent_test.go b/core/agents/lastfm/agent_test.go index 0285790e9..019d9e1d3 100644 --- a/core/agents/lastfm/agent_test.go +++ b/core/agents/lastfm/agent_test.go @@ -234,14 +234,14 @@ var _ = Describe("lastfmAgent", func() { agent = lastFMConstructor(ds) agent.client = client track = &model.MediaFile{ - ID: "123", - Title: "Track Title", - Album: "Track Album", - Artist: "Track Artist", - AlbumArtist: "Track AlbumArtist", - TrackNumber: 1, - Duration: 180, - MbzTrackID: "mbz-123", + ID: "123", + Title: "Track Title", + Album: "Track Album", + Artist: "Track Artist", + AlbumArtist: "Track AlbumArtist", + TrackNumber: 1, + Duration: 180, + MbzRecordingID: "mbz-123", } }) @@ -262,7 +262,7 @@ var _ = Describe("lastfmAgent", func() { Expect(sentParams.Get("albumArtist")).To(Equal(track.AlbumArtist)) Expect(sentParams.Get("trackNumber")).To(Equal(strconv.Itoa(track.TrackNumber))) Expect(sentParams.Get("duration")).To(Equal(strconv.FormatFloat(float64(track.Duration), 'G', -1, 32))) - Expect(sentParams.Get("mbid")).To(Equal(track.MbzTrackID)) + Expect(sentParams.Get("mbid")).To(Equal(track.MbzRecordingID)) }) It("returns ErrNotAuthorized if user is not linked", func() { @@ -289,7 +289,7 @@ var _ = Describe("lastfmAgent", func() { Expect(sentParams.Get("albumArtist")).To(Equal(track.AlbumArtist)) Expect(sentParams.Get("trackNumber")).To(Equal(strconv.Itoa(track.TrackNumber))) Expect(sentParams.Get("duration")).To(Equal(strconv.FormatFloat(float64(track.Duration), 'G', -1, 32))) - Expect(sentParams.Get("mbid")).To(Equal(track.MbzTrackID)) + Expect(sentParams.Get("mbid")).To(Equal(track.MbzRecordingID)) Expect(sentParams.Get("timestamp")).To(Equal(strconv.FormatInt(ts.Unix(), 10))) }) diff --git a/core/agents/listenbrainz/agent.go b/core/agents/listenbrainz/agent.go index f98c91859..71378f126 100644 --- a/core/agents/listenbrainz/agent.go +++ b/core/agents/listenbrainz/agent.go @@ -55,7 +55,7 @@ func (l *listenBrainzAgent) formatListen(track *model.MediaFile) listenInfo { SubmissionClientVersion: consts.Version, TrackNumber: track.TrackNumber, ArtistMbzIDs: []string{track.MbzArtistID}, - TrackMbzID: track.MbzTrackID, + RecordingMbzID: track.MbzRecordingID, ReleaseMbID: track.MbzAlbumID, }, }, diff --git a/core/agents/listenbrainz/agent_test.go b/core/agents/listenbrainz/agent_test.go index e1a17736a..9c3a0b2ff 100644 --- a/core/agents/listenbrainz/agent_test.go +++ b/core/agents/listenbrainz/agent_test.go @@ -32,14 +32,14 @@ var _ = Describe("listenBrainzAgent", func() { agent = listenBrainzConstructor(ds) agent.client = newClient("http://localhost:8080", httpClient) track = &model.MediaFile{ - ID: "123", - Title: "Track Title", - Album: "Track Album", - Artist: "Track Artist", - TrackNumber: 1, - MbzTrackID: "mbz-123", - MbzAlbumID: "mbz-456", - MbzArtistID: "mbz-789", + ID: "123", + Title: "Track Title", + Album: "Track Album", + Artist: "Track Artist", + TrackNumber: 1, + MbzRecordingID: "mbz-123", + MbzAlbumID: "mbz-456", + MbzArtistID: "mbz-789", } }) @@ -60,7 +60,7 @@ var _ = Describe("listenBrainzAgent", func() { "SubmissionClient": Equal(consts.AppName), "SubmissionClientVersion": Equal(consts.Version), "TrackNumber": Equal(track.TrackNumber), - "TrackMbzID": Equal(track.MbzTrackID), + "RecordingMbzID": Equal(track.MbzRecordingID), "ReleaseMbID": Equal(track.MbzAlbumID), "ArtistMbzIDs": MatchAllElements(idArtistId, Elements{ "mbz-789": Equal(track.MbzArtistID), diff --git a/core/agents/listenbrainz/client.go b/core/agents/listenbrainz/client.go index 8ed4d1691..32c6b1840 100644 --- a/core/agents/listenbrainz/client.go +++ b/core/agents/listenbrainz/client.go @@ -76,7 +76,7 @@ type additionalInfo struct { SubmissionClient string `json:"submission_client,omitempty"` SubmissionClientVersion string `json:"submission_client_version,omitempty"` TrackNumber int `json:"tracknumber,omitempty"` - TrackMbzID string `json:"track_mbid,omitempty"` + RecordingMbzID string `json:"recording_mbid,omitempty"` ArtistMbzIDs []string `json:"artist_mbids,omitempty"` ReleaseMbID string `json:"release_mbid,omitempty"` } diff --git a/core/agents/listenbrainz/client_test.go b/core/agents/listenbrainz/client_test.go index 42fc2dc15..6d1bced36 100644 --- a/core/agents/listenbrainz/client_test.go +++ b/core/agents/listenbrainz/client_test.go @@ -74,10 +74,10 @@ var _ = Describe("client", func() { TrackName: "Track Title", ReleaseName: "Track Album", AdditionalInfo: additionalInfo{ - TrackNumber: 1, - TrackMbzID: "mbz-123", - ArtistMbzIDs: []string{"mbz-789"}, - ReleaseMbID: "mbz-456", + TrackNumber: 1, + RecordingMbzID: "mbz-123", + ArtistMbzIDs: []string{"mbz-789"}, + ReleaseMbID: "mbz-456", }, }, } diff --git a/core/external_metadata.go b/core/external_metadata.go index 972c0c756..f61afb44b 100644 --- a/core/external_metadata.go +++ b/core/external_metadata.go @@ -399,7 +399,7 @@ func (e *externalMetadata) getMatchingTopSongs(ctx context.Context, agent agents func (e *externalMetadata) findMatchingTrack(ctx context.Context, mbid string, artistID, title string) (*model.MediaFile, error) { if mbid != "" { mfs, err := e.ds.MediaFile(ctx).GetAll(model.QueryOptions{ - Filters: squirrel.Eq{"mbz_track_id": mbid}, + Filters: squirrel.Eq{"mbz_recording_id": mbid}, }) if err == nil && len(mfs) > 0 { return &mfs[0], nil diff --git a/core/scrobbler/play_tracker_test.go b/core/scrobbler/play_tracker_test.go index fa074fb2d..9bf7ae2ee 100644 --- a/core/scrobbler/play_tracker_test.go +++ b/core/scrobbler/play_tracker_test.go @@ -40,16 +40,16 @@ var _ = Describe("PlayTracker", func() { tracker = newPlayTracker(ds, events.GetBroker()) track = model.MediaFile{ - ID: "123", - Title: "Track Title", - Album: "Track Album", - AlbumID: "al-1", - Artist: "Track Artist", - ArtistID: "ar-1", - AlbumArtist: "Track AlbumArtist", - TrackNumber: 1, - Duration: 180, - MbzTrackID: "mbz-123", + ID: "123", + Title: "Track Title", + Album: "Track Album", + AlbumID: "al-1", + Artist: "Track Artist", + ArtistID: "ar-1", + AlbumArtist: "Track AlbumArtist", + TrackNumber: 1, + Duration: 180, + MbzRecordingID: "mbz-123", } _ = ds.MediaFile(ctx).Put(&track) artist = model.Artist{ID: "ar-1"} diff --git a/db/migration/20230616214944_rename_musicbrainz_recording_id.go b/db/migration/20230616214944_rename_musicbrainz_recording_id.go new file mode 100644 index 000000000..b482e3dc8 --- /dev/null +++ b/db/migration/20230616214944_rename_musicbrainz_recording_id.go @@ -0,0 +1,27 @@ +package migrations + +import ( + "database/sql" + + "github.com/pressly/goose/v3" +) + +func init() { + goose.AddMigration(upRenameMusicbrainzRecordingId, downRenameMusicbrainzRecordingId) +} + +func upRenameMusicbrainzRecordingId(tx *sql.Tx) error { + _, err := tx.Exec(` +alter table media_file + rename column mbz_track_id to mbz_recording_id; +`) + return err +} + +func downRenameMusicbrainzRecordingId(tx *sql.Tx) error { + _, err := tx.Exec(` +alter table media_file + rename column mbz_recording_id to mbz_track_id; +`) + return err +} diff --git a/model/mediafile.go b/model/mediafile.go index 9caf54e94..71951d587 100644 --- a/model/mediafile.go +++ b/model/mediafile.go @@ -59,7 +59,7 @@ type MediaFile struct { Lyrics string `structs:"lyrics" json:"lyrics,omitempty"` Bpm int `structs:"bpm" json:"bpm,omitempty"` CatalogNum string `structs:"catalog_num" json:"catalogNum,omitempty"` - MbzTrackID string `structs:"mbz_track_id" json:"mbzTrackId,omitempty" orm:"column(mbz_track_id)"` + MbzRecordingID string `structs:"mbz_recording_id" json:"mbzRecordingID,omitempty" orm:"column(mbz_recording_id)"` MbzReleaseTrackID string `structs:"mbz_release_track_id" json:"mbzReleaseTrackId,omitempty" orm:"column(mbz_release_track_id)"` MbzAlbumID string `structs:"mbz_album_id" json:"mbzAlbumId,omitempty" orm:"column(mbz_album_id)"` MbzArtistID string `structs:"mbz_artist_id" json:"mbzArtistId,omitempty" orm:"column(mbz_artist_id)"` diff --git a/scanner/mapping.go b/scanner/mapping.go index 565211a32..6ae89a675 100644 --- a/scanner/mapping.go +++ b/scanner/mapping.go @@ -62,7 +62,7 @@ func (s mediaFileMapper) toMediaFile(md metadata.Tags) model.MediaFile { mf.OrderArtistName = sanitizeFieldForSorting(mf.Artist) mf.OrderAlbumArtistName = sanitizeFieldForSorting(mf.AlbumArtist) mf.CatalogNum = md.CatalogNum() - mf.MbzTrackID = md.MbzTrackID() + mf.MbzRecordingID = md.MbzRecordingID() mf.MbzReleaseTrackID = md.MbzReleaseTrackID() mf.MbzAlbumID = md.MbzAlbumID() mf.MbzArtistID = md.MbzArtistID() diff --git a/scanner/metadata/metadata.go b/scanner/metadata/metadata.go index d6268c07f..4f6191675 100644 --- a/scanner/metadata/metadata.go +++ b/scanner/metadata/metadata.go @@ -120,7 +120,9 @@ func (t Tags) MbzReleaseTrackID() string { return t.getMbzID("musicbrainz_releasetrackid", "musicbrainz release track id") } -func (t Tags) MbzTrackID() string { return t.getMbzID("musicbrainz_trackid", "musicbrainz track id") } +func (t Tags) MbzRecordingID() string { + return t.getMbzID("musicbrainz_trackid", "musicbrainz track id") +} func (t Tags) MbzAlbumID() string { return t.getMbzID("musicbrainz_albumid", "musicbrainz album id") } func (t Tags) MbzArtistID() string { return t.getMbzID("musicbrainz_artistid", "musicbrainz artist id") diff --git a/scanner/metadata/metadata_internal_test.go b/scanner/metadata/metadata_internal_test.go index 2749e69a4..54b81b0b9 100644 --- a/scanner/metadata/metadata_internal_test.go +++ b/scanner/metadata/metadata_internal_test.go @@ -36,7 +36,7 @@ var _ = Describe("Tags", func() { "musicbrainz_artistid": {"89ad4ac3-39f7-470e-963a-56509c546377"}, "musicbrainz_albumartistid": {"ada7a83c-e3e1-40f1-93f9-3e73dbc9298a"}, } - Expect(md.MbzTrackID()).To(Equal("8f84da07-09a0-477b-b216-cc982dabcde1")) + Expect(md.MbzRecordingID()).To(Equal("8f84da07-09a0-477b-b216-cc982dabcde1")) Expect(md.MbzReleaseTrackID()).To(Equal("6caf16d3-0b20-3fe6-8020-52e31831bc11")) Expect(md.MbzAlbumID()).To(Equal("f68c985d-f18b-4f4a-b7f0-87837cf3fbf9")) Expect(md.MbzArtistID()).To(Equal("89ad4ac3-39f7-470e-963a-56509c546377")) @@ -50,7 +50,7 @@ var _ = Describe("Tags", func() { "musicbrainz_artistid": {"200455"}, "musicbrainz_albumartistid": {"194"}, } - Expect(md.MbzTrackID()).To(Equal("")) + Expect(md.MbzRecordingID()).To(Equal("")) Expect(md.MbzAlbumID()).To(Equal("")) Expect(md.MbzArtistID()).To(Equal("")) Expect(md.MbzAlbumArtistID()).To(Equal("")) diff --git a/tests/fixtures/listenbrainz.nowplaying.request.json b/tests/fixtures/listenbrainz.nowplaying.request.json index 6dec0ed66..2ed3dfe3f 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, "track_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"}}}]} diff --git a/tests/fixtures/listenbrainz.scrobble.request.json b/tests/fixtures/listenbrainz.scrobble.request.json index 58c8b8398..404350807 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, "track_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"}}}]}