fix(listenbrainz): submit track recording ID instead of track ID

closes #240
This commit is contained in:
sentriz
2022-10-08 16:08:40 +01:00
parent ea28ff1df3
commit 8ee357b021
2 changed files with 17 additions and 13 deletions

View File

@@ -37,12 +37,14 @@ func (t *Tagger) firstInt(sep string, keys ...string) int {
return 0
}
// https://picard-docs.musicbrainz.org/downloads/MusicBrainz_Picard_Tag_Map.html
func (t *Tagger) Title() string { return t.first("title") }
func (t *Tagger) BrainzID() string { return t.first("musicbrainz_trackid") }
func (t *Tagger) BrainzID() string { return t.first("musicbrainz_trackid") } // musicbrainz recording ID
func (t *Tagger) Artist() string { return t.first("artist") }
func (t *Tagger) Album() string { return t.first("album") }
func (t *Tagger) AlbumArtist() string { return t.first("albumartist", "album artist") }
func (t *Tagger) AlbumBrainzID() string { return t.first("musicbrainz_albumid") }
func (t *Tagger) AlbumBrainzID() string { return t.first("musicbrainz_albumid") } // musicbrainz release ID
func (t *Tagger) Genre() string { return t.first("genre") }
func (t *Tagger) TrackNumber() int { return t.firstInt("/" /* eg. 5/12 */, "tracknumber") }
func (t *Tagger) DiscNumber() int { return t.firstInt("/" /* eg. 1/2 */, "discnumber") }

View File

@@ -26,10 +26,17 @@ var (
ErrListenBrainz = errors.New("listenbrainz error")
)
// https://listenbrainz.readthedocs.io/en/latest/users/json.html#submission-json
type Payload struct {
ListenedAt int `json:"listened_at,omitempty"`
TrackMetadata *TrackMetadata `json:"track_metadata"`
}
type AdditionalInfo struct {
TrackNumber int `json:"tracknumber,omitempty"`
TrackMBID string `json:"track_mbid,omitempty"`
TrackLength int `json:"track_length,omitempty"`
TrackNumber int `json:"tracknumber,omitempty"`
TrackMBID string `json:"track_mbid,omitempty"`
RecordingMBID string `json:"recording_mbid,omitempty"`
TrackLength int `json:"track_length,omitempty"`
}
type TrackMetadata struct {
@@ -39,11 +46,6 @@ type TrackMetadata struct {
ReleaseName string `json:"release_name,omitempty"`
}
type Payload struct {
ListenedAt int `json:"listened_at,omitempty"`
TrackMetadata *TrackMetadata `json:"track_metadata"`
}
type Scrobble struct {
ListenType string `json:"listen_type,omitempty"`
Payload []*Payload `json:"payload"`
@@ -58,9 +60,9 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su
payload := &Payload{
TrackMetadata: &TrackMetadata{
AdditionalInfo: &AdditionalInfo{
TrackNumber: track.TagTrackNumber,
TrackMBID: track.TagBrainzID,
TrackLength: track.Length,
TrackNumber: track.TagTrackNumber,
RecordingMBID: track.TagBrainzID,
TrackLength: track.Length,
},
ArtistName: track.TagTrackArtist,
TrackName: track.TagTitle,