diff --git a/src/main/plugins/lastfm.ts b/src/main/plugins/lastfm.ts index cf06565e..10440584 100644 --- a/src/main/plugins/lastfm.ts +++ b/src/main/plugins/lastfm.ts @@ -78,27 +78,29 @@ export default class LastFMPlugin { } } - private async scrobbleSong(attributes: any) { + private scrobbleSong(attributes: any) { + if(this._timer) clearTimeout(this._timer); + var self = this; this._timer = setTimeout(() => { const currentAttributes = attributes; - if (!this._lastfm || this._lastfm.cachedAttributes === attributes) { + if (!self._lastfm || self._lastfm.cachedAttributes === attributes) { return } - if (this._lastfm.cachedAttributes) { - if (this._lastfm.cachedAttributes.playParams.id === attributes.playParams.id) return; + if (self._lastfm.cachedAttributes) { + if (self._lastfm.cachedAttributes.playParams.id === attributes.playParams.id) return; } if (currentAttributes.status && currentAttributes === attributes) { if (fs.existsSync(this.sessionPath)) { // Scrobble playing song. if (attributes.status === true) { - this._lastfm.track.scrobble({ + self._lastfm.track.scrobble({ 'artist': this.filterArtistName(attributes.artistName), 'track': attributes.name, 'album': attributes.albumName, - 'albumArtist': this.filterArtistName(attributes.artistName), + 'albumArtist': self.filterArtistName(attributes.artistName), 'timestamp': new Date().getTime() / 1000 }, function (err: any, scrobbled: any) { if (err) { @@ -107,14 +109,14 @@ export default class LastFMPlugin { console.log('[LastFM] Successfully scrobbled: ', scrobbled); }); - this._lastfm.cachedAttributes = attributes + self._lastfm.cachedAttributes = attributes } } else { - this.authenticate(); + self.authenticate(); } } else { - return console.log('[LastFM] Did not add ', attributes.name, '—', this.filterArtistName(attributes.artistName), 'because now playing a other song.'); - }},Math.round(attributes.durationInMillis * (this._store.lastfm.scrobble_after / 100))); + return console.log('[LastFM] Did not add ', attributes.name, '—', self.filterArtistName(attributes.artistName), 'because now playing a other song.'); + }},Math.round(attributes.durationInMillis * (self._store.lastfm.scrobble_after / 100))); } private filterArtistName(artist: any) { @@ -235,8 +237,8 @@ export default class LastFMPlugin { * @param attributes Music Attributes (attributes.status = current state) */ onPlaybackStateDidChange(attributes: object): void { - // this.scrobbleSong(attributes) - // this.updateNowPlayingSong(attributes) + this.updateNowPlayingSong(attributes) + this.scrobbleSong(attributes) } /** @@ -246,10 +248,9 @@ export default class LastFMPlugin { onNowPlayingItemDidChange(attributes: object): void { if (!this._store.lastfm.filterLoop){ this._lastfm.cachedNowPlayingAttributes = false; - this._lastfm.cachedAttributes = false} - this.scrobbleSong(attributes) - this.updateNowPlayingSong(attributes) - if(this._timer) clearTimeout(this._timer) + this._lastfm.cachedAttributes = false} + this.updateNowPlayingSong(attributes) + this.scrobbleSong(attributes) } } \ No newline at end of file