fix: don't send listenbrainz playing_now and submitted_at at the same time
fixes #168
This commit is contained in:
@@ -27,26 +27,26 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type AdditionalInfo struct {
|
type AdditionalInfo struct {
|
||||||
TrackNumber int `json:"tracknumber"`
|
TrackNumber int `json:"tracknumber,omitempty"`
|
||||||
TrackMBID string `json:"track_mbid"`
|
TrackMBID string `json:"track_mbid,omitempty"`
|
||||||
TrackLength int `json:"track_length"`
|
TrackLength int `json:"track_length,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TrackMetadata struct {
|
type TrackMetadata struct {
|
||||||
AdditionalInfo AdditionalInfo `json:"additional_info"`
|
AdditionalInfo *AdditionalInfo `json:"additional_info"`
|
||||||
ArtistName string `json:"artist_name"`
|
ArtistName string `json:"artist_name,omitempty"`
|
||||||
TrackName string `json:"track_name"`
|
TrackName string `json:"track_name,omitempty"`
|
||||||
ReleaseName string `json:"release_name"`
|
ReleaseName string `json:"release_name,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Payload struct {
|
type Payload struct {
|
||||||
ListenedAt int `json:"listened_at"`
|
ListenedAt int `json:"listened_at,omitempty"`
|
||||||
TrackMetadata TrackMetadata `json:"track_metadata"`
|
TrackMetadata *TrackMetadata `json:"track_metadata"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Scrobble struct {
|
type Scrobble struct {
|
||||||
ListenType string `json:"listen_type"`
|
ListenType string `json:"listen_type,omitempty"`
|
||||||
Payload []Payload `json:"payload"`
|
Payload []*Payload `json:"payload"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Scrobbler struct{}
|
type Scrobbler struct{}
|
||||||
@@ -55,10 +55,9 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su
|
|||||||
if user.ListenBrainzURL == "" || user.ListenBrainzToken == "" {
|
if user.ListenBrainzURL == "" || user.ListenBrainzToken == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
payload := Payload{
|
payload := &Payload{
|
||||||
ListenedAt: int(stamp.Unix()),
|
TrackMetadata: &TrackMetadata{
|
||||||
TrackMetadata: TrackMetadata{
|
AdditionalInfo: &AdditionalInfo{
|
||||||
AdditionalInfo: AdditionalInfo{
|
|
||||||
TrackNumber: track.TagTrackNumber,
|
TrackNumber: track.TagTrackNumber,
|
||||||
TrackMBID: track.TagBrainzID,
|
TrackMBID: track.TagBrainzID,
|
||||||
TrackLength: track.Length,
|
TrackLength: track.Length,
|
||||||
@@ -69,10 +68,12 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
scrobble := Scrobble{
|
scrobble := Scrobble{
|
||||||
ListenType: listenTypeSingle,
|
Payload: []*Payload{payload},
|
||||||
Payload: []Payload{payload},
|
|
||||||
}
|
}
|
||||||
if !submission {
|
if submission && len(scrobble.Payload) > 0 {
|
||||||
|
scrobble.ListenType = listenTypeSingle
|
||||||
|
scrobble.Payload[0].ListenedAt = int(stamp.Unix())
|
||||||
|
} else {
|
||||||
scrobble.ListenType = listenTypePlayingNow
|
scrobble.ListenType = listenTypePlayingNow
|
||||||
}
|
}
|
||||||
payloadBuf := bytes.Buffer{}
|
payloadBuf := bytes.Buffer{}
|
||||||
|
|||||||
Reference in New Issue
Block a user