function sendScrobble(track) { let timestamp = clock.getStartTimestamp(); logger.info('going to scrobble this track on stop'); clearScrobblingTimeout(); player.onResumed.removeListener(setScrobblingTimeout); player.onStopped.addListener(function _handleStopped() { // only once player.onStopped.removeListener(_handleStopped); lastfm.scrobble(timestamp, track) .then(() => logger.info('scrobbled')) .catch((error) => logger.info('scrobbling error:', error)); }); }
function setScrobblingTimeout(track) { let halftime = Math.floor(track.duration * SCROBBLING_MIN_PERCENT - clock.getPlayedTime()); scrobbleTimeout = setTimeout(sendScrobble.bind(null, track), halftime); }