[plugin/scrobbler] Fixed scrobbling issues due to invalid payload
This commit is contained in:
parent
dbe69eebce
commit
1d36df3f69
|
@ -104,17 +104,21 @@ def get_scrobble2_payload(track, date, suffix="[0]"):
|
||||||
"""
|
"""
|
||||||
upload = track.uploads.filter(duration__gte=0).first()
|
upload = track.uploads.filter(duration__gte=0).first()
|
||||||
data = {
|
data = {
|
||||||
"artist{}".format(suffix): track.artist.name,
|
"artist": track.artist.name,
|
||||||
"track{}".format(suffix): track.title,
|
"track": track.title,
|
||||||
"duration{}".format(suffix): upload.duration if upload else 0,
|
"chosenByUser": 1,
|
||||||
"album{}".format(suffix): (track.album.title if track.album else "") or "",
|
|
||||||
"trackNumber{}".format(suffix): track.position or "",
|
|
||||||
"mbid{}".format(suffix): str(track.mbid) or "",
|
|
||||||
"chosenByUser{}".format(suffix): "P", # Source: P = chosen by user
|
|
||||||
}
|
}
|
||||||
|
if upload:
|
||||||
|
data["duration"] = upload.duration
|
||||||
|
if track.album:
|
||||||
|
data["album"] = track.album.title
|
||||||
|
if track.position:
|
||||||
|
data["trackNumber"] = track.position
|
||||||
|
if track.mbid:
|
||||||
|
data["mbid"] = str(track.mbid)
|
||||||
if date:
|
if date:
|
||||||
offset = upload.duration / 2 if upload.duration else 0
|
offset = upload.duration / 2 if upload.duration else 0
|
||||||
data["timestamp{}".format(suffix)] = int(date.timestamp()) - offset
|
data["timestamp"] = int(int(date.timestamp()) - offset)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,7 +146,9 @@ def submit_scrobble_v2(
|
||||||
"api_key": api_key,
|
"api_key": api_key,
|
||||||
"sk": session_key,
|
"sk": session_key,
|
||||||
}
|
}
|
||||||
params.update(get_scrobble2_payload(track, scrobble_time))
|
scrobble = get_scrobble2_payload(track, scrobble_time)
|
||||||
|
PLUGIN["logger"].debug("Scrobble payload: %s", scrobble)
|
||||||
|
params.update(scrobble)
|
||||||
params["api_sig"] = hash_request(params, api_secret)
|
params["api_sig"] = hash_request(params, api_secret)
|
||||||
response = session.post(scrobble_url, params)
|
response = session.post(scrobble_url, params)
|
||||||
if 'status="ok"' not in response.text:
|
if 'status="ok"' not in response.text:
|
||||||
|
|
Loading…
Reference in New Issue