use time.Time in scrobbler interface
This commit is contained in:
@@ -52,11 +52,11 @@ func (c *Controller) ServeScrobble(r *http.Request) *spec.Response {
|
|||||||
First(track, id.Value)
|
First(track, id.Value)
|
||||||
// clients will provide time in miliseconds, so use that or
|
// clients will provide time in miliseconds, so use that or
|
||||||
// instead convert UnixNano to miliseconds
|
// instead convert UnixNano to miliseconds
|
||||||
optStampMili := params.GetOrInt("time", int(time.Now().UnixNano()/1e6))
|
optStamp := params.GetOrTime("time", time.Now())
|
||||||
optSubmission := params.GetOrBool("submission", true)
|
optSubmission := params.GetOrBool("submission", true)
|
||||||
var scrobbleErrs multierr.Err
|
var scrobbleErrs multierr.Err
|
||||||
for _, scrobbler := range c.Scrobblers {
|
for _, scrobbler := range c.Scrobblers {
|
||||||
if err := scrobbler.Scrobble(user, track, optStampMili, optSubmission); err != nil {
|
if err := scrobbler.Scrobble(user, track, optStamp, optSubmission); err != nil {
|
||||||
scrobbleErrs.Add(err)
|
scrobbleErrs.Add(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
"go.senan.xyz/gonic/server/db"
|
"go.senan.xyz/gonic/server/db"
|
||||||
"go.senan.xyz/gonic/server/scrobble"
|
"go.senan.xyz/gonic/server/scrobble"
|
||||||
@@ -141,7 +142,7 @@ type Scrobbler struct {
|
|||||||
DB *db.DB
|
DB *db.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stampMili int, submission bool) error {
|
func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, submission bool) error {
|
||||||
if user.LastFMSession == "" {
|
if user.LastFMSession == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -155,7 +156,7 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stampMili int, subm
|
|||||||
if submission {
|
if submission {
|
||||||
params.Add("method", "track.Scrobble")
|
params.Add("method", "track.Scrobble")
|
||||||
// last.fm wants the timestamp in seconds
|
// last.fm wants the timestamp in seconds
|
||||||
params.Add("timestamp", strconv.Itoa(stampMili/1e3))
|
params.Add("timestamp", strconv.Itoa(int(stamp.Unix())))
|
||||||
} else {
|
} else {
|
||||||
params.Add("method", "track.updateNowPlaying")
|
params.Add("method", "track.updateNowPlaying")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"go.senan.xyz/gonic/server/db"
|
"go.senan.xyz/gonic/server/db"
|
||||||
"go.senan.xyz/gonic/server/scrobble"
|
"go.senan.xyz/gonic/server/scrobble"
|
||||||
@@ -48,12 +49,12 @@ type Scrobble struct {
|
|||||||
|
|
||||||
type Scrobbler struct{}
|
type Scrobbler struct{}
|
||||||
|
|
||||||
func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stampMili int, submission bool) error {
|
func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, submission bool) error {
|
||||||
if user.ListenBrainzURL == "" || user.ListenBrainzToken == "" {
|
if user.ListenBrainzURL == "" || user.ListenBrainzToken == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
payload := Payload{
|
payload := Payload{
|
||||||
ListenedAt: stampMili / 1e3,
|
ListenedAt: int(stamp.Unix()),
|
||||||
TrackMetadata: TrackMetadata{
|
TrackMetadata: TrackMetadata{
|
||||||
AdditionalInfo: AdditionalInfo{
|
AdditionalInfo: AdditionalInfo{
|
||||||
TrackNumber: track.TagTrackNumber,
|
TrackNumber: track.TagTrackNumber,
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package scrobble
|
package scrobble
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
"go.senan.xyz/gonic/server/db"
|
"go.senan.xyz/gonic/server/db"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Scrobbler interface {
|
type Scrobbler interface {
|
||||||
Scrobble(user *db.User, track *db.Track, stampMili int, submission bool) error
|
Scrobble(user *db.User, track *db.Track, stamp time.Time, submission bool) error
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user