diff --git a/db/model.go b/db/model.go index 2b39292..e2a46ea 100644 --- a/db/model.go +++ b/db/model.go @@ -78,6 +78,7 @@ type Track struct { TagDiscNumber int `sql:"default: null"` TagGenre *Genre TagGenreID int `sql:"default: null; type:int REFERENCES genres(id) ON DELETE CASCADE"` + TagBrainzID string `sql:"default: null"` } func (t *Track) Ext() string { diff --git a/scanner/scanner.go b/scanner/scanner.go index 7e1d1fb..06e760c 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -336,6 +336,7 @@ func (s *Scanner) handleTrack(it *item) error { track.TagTrackArtist = trTags.Artist() track.TagTrackNumber = trTags.TrackNumber() track.TagDiscNumber = trTags.DiscNumber() + track.TagBrainzID = trTags.BrainzID() track.Length = trTags.Length() // these two should be calculated track.Bitrate = trTags.Bitrate() // ...from the file instead of tags // diff --git a/scanner/tags/tags.go b/scanner/tags/tags.go index 0083328..21b703e 100644 --- a/scanner/tags/tags.go +++ b/scanner/tags/tags.go @@ -34,6 +34,7 @@ func (t *Tags) firstTag(keys ...string) string { } func (t *Tags) Title() string { return t.firstTag("title") } +func (t *Tags) BrainzID() string { return t.firstTag("musicbrainz_trackid") } func (t *Tags) Artist() string { return t.firstTag("artist") } func (t *Tags) Album() string { return t.firstTag("album") } func (t *Tags) AlbumArtist() string { return t.firstTag("albumartist", "album artist") } diff --git a/server/lastfm/lastfm.go b/server/lastfm/lastfm.go index a996ba8..ce44923 100644 --- a/server/lastfm/lastfm.go +++ b/server/lastfm/lastfm.go @@ -95,7 +95,7 @@ func Scrobble(apiKey, secret, session string, opts ScrobbleOpts) error { params.Add("track", opts.Track.TagTitle) params.Add("trackNumber", strconv.Itoa(opts.Track.TagTrackNumber)) params.Add("album", opts.Track.Album.TagTitle) - params.Add("mbid", opts.Track.Album.TagBrainzID) + params.Add("mbid", opts.Track.TagBrainzID) params.Add("albumArtist", opts.Track.Artist.Name) params.Add("api_sig", getParamSignature(params, secret)) _, err := makeRequest("POST", params)