fix offlien scorbbling

This commit is contained in:
sentriz
2019-05-21 15:20:49 +01:00
parent aa8e043337
commit 781811bc96
2 changed files with 7 additions and 9 deletions

View File

@@ -74,11 +74,12 @@ func GetSession(apiKey, secret, token string) (string, error) {
}
func Scrobble(apiKey, secret, session string,
track *model.Track, stamp int, submission bool) error {
track *model.Track, stampMili int, submission bool) error {
params := url.Values{}
if submission {
params.Add("method", "track.Scrobble")
params.Add("timestamp", strconv.Itoa(stamp))
// last.fm wants the timestamp in seconds
params.Add("timestamp", strconv.Itoa(stampMili / 1e3))
} else {
params.Add("method", "track.updateNowPlaying")
}

View File

@@ -103,19 +103,16 @@ func (c *Controller) Scrobble(w http.ResponseWriter, r *http.Request) {
Preload("Album").
Preload("AlbumArtist").
First(&track, id)
// get time from args or use now
time := getIntParamOr(r, "time", int(time.Now().Unix()))
// get submission, where the default is true. we will
// check if it's false later
submission := getStrParamOr(r, "submission", "true")
// scrobble with above info
err = lastfm.Scrobble(
c.GetSetting("lastfm_api_key"),
c.GetSetting("lastfm_secret"),
user.LastFMSession,
&track,
time,
submission != "false",
// clients will provide time in miliseconds, so use that or
// instead convert UnixNano to miliseconds
getIntParamOr(r, "time", int(time.Now().UnixNano() / 1e6)),
getStrParamOr(r, "submission", "true") != "false",
)
if err != nil {
respondError(w, r, 0, fmt.Sprintf("error when submitting: %v", err))