fix offlien scorbbling
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user