You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are several bugs with third party apps (like finamp) that cause this plugin to not scrobble tracks, and while checking those I realized one thing that this plugin does not do correctly, and fixing that could incidentally fix those problems. If I understand correctly, the plugin is using the stop event to decide whether to send a scrobble. This is not correct, as scrobbles should happen earlier, not when the track ends/stops playing.
And the track has been played for at least half its duration, or for 4 minutes (whichever occurs earlier.)
The plugin should schedule a scrobble using a timeout when the track starts, using for the timeout MIN(track.length/2, 4*60). If the track is stopped at any point, cancel the timeout call if it has not happened yet (as this means that it has not played long enough to be submitted).
Doing it like this will prevent any problems with apps reporting stopping time wrongly, as it will be done independently of it.
(fwiw, I implemented a last.fm scrobbler over ten years ago, that's how I did it back then)
The text was updated successfully, but these errors were encountered:
There are several bugs with third party apps (like finamp) that cause this plugin to not scrobble tracks, and while checking those I realized one thing that this plugin does not do correctly, and fixing that could incidentally fix those problems. If I understand correctly, the plugin is using the stop event to decide whether to send a scrobble. This is not correct, as scrobbles should happen earlier, not when the track ends/stops playing.
The last.fm specification ( https://www.last.fm/api/scrobbling#when-is-a-scrobble-a-scrobble ) states that a track has to be scrobbled when:
The plugin should schedule a scrobble using a timeout when the track starts, using for the timeout
MIN(track.length/2, 4*60)
. If the track is stopped at any point, cancel the timeout call if it has not happened yet (as this means that it has not played long enough to be submitted).Doing it like this will prevent any problems with apps reporting stopping time wrongly, as it will be done independently of it.
(fwiw, I implemented a last.fm scrobbler over ten years ago, that's how I did it back then)
The text was updated successfully, but these errors were encountered: