Fix another bug where next track would get scrobbled additionally
This commit is contained in:
@@ -60,8 +60,7 @@ func NewPlaybackManager(
|
|||||||
if tracknum >= int64(len(pm.playQueue)) {
|
if tracknum >= int64(len(pm.playQueue)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
pm.checkScrobble(pm.playTimeStopwatch.Elapsed())
|
pm.checkScrobble()
|
||||||
pm.playTimeStopwatch.Reset()
|
|
||||||
if pm.player.GetStatus().State == player.Playing {
|
if pm.player.GetStatus().State == player.Playing {
|
||||||
pm.playTimeStopwatch.Start()
|
pm.playTimeStopwatch.Start()
|
||||||
}
|
}
|
||||||
@@ -76,8 +75,7 @@ func NewPlaybackManager(
|
|||||||
})
|
})
|
||||||
p.OnStopped(func() {
|
p.OnStopped(func() {
|
||||||
pm.playTimeStopwatch.Stop()
|
pm.playTimeStopwatch.Stop()
|
||||||
pm.checkScrobble(pm.playTimeStopwatch.Elapsed())
|
pm.checkScrobble()
|
||||||
pm.playTimeStopwatch.Reset()
|
|
||||||
pm.stopPollTimePos()
|
pm.stopPollTimePos()
|
||||||
pm.doUpdateTimePos()
|
pm.doUpdateTimePos()
|
||||||
pm.invokeOnSongChangeCallbacks()
|
pm.invokeOnSongChangeCallbacks()
|
||||||
@@ -255,7 +253,7 @@ func (p *PlaybackManager) RemoveTracksFromQueue(trackIDs []string) {
|
|||||||
if i == p.NowPlayingIndex() {
|
if i == p.NowPlayingIndex() {
|
||||||
isPlayingTrackRemoved = true
|
isPlayingTrackRemoved = true
|
||||||
// If we are removing the currently playing track, we need to scrobble it
|
// If we are removing the currently playing track, we need to scrobble it
|
||||||
p.checkScrobble(p.playTimeStopwatch.Elapsed())
|
p.checkScrobble()
|
||||||
}
|
}
|
||||||
if err := p.player.RemoveTrackAt(i - rmCount); err == nil {
|
if err := p.player.RemoveTrackAt(i - rmCount); err == nil {
|
||||||
rmCount++
|
rmCount++
|
||||||
@@ -294,10 +292,11 @@ func (p *PlaybackManager) SetReplayGainOptions(config ReplayGainConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// call BEFORE updating p.nowPlayingIdx
|
// call BEFORE updating p.nowPlayingIdx
|
||||||
func (p *PlaybackManager) checkScrobble(playDur time.Duration) {
|
func (p *PlaybackManager) checkScrobble() {
|
||||||
if !p.scrobbleCfg.Enabled || len(p.playQueue) == 0 || p.nowPlayingIdx < 0 {
|
if !p.scrobbleCfg.Enabled || len(p.playQueue) == 0 || p.nowPlayingIdx < 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
playDur := p.playTimeStopwatch.Elapsed()
|
||||||
if playDur.Seconds() < 0.1 || p.curTrackTime < 0.1 {
|
if playDur.Seconds() < 0.1 || p.curTrackTime < 0.1 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -311,6 +310,7 @@ func (p *PlaybackManager) checkScrobble(playDur time.Duration) {
|
|||||||
p.lastScrobbled = song
|
p.lastScrobbled = song
|
||||||
go p.sm.Server.Scrobble(song.ID, true)
|
go p.sm.Server.Scrobble(song.ID, true)
|
||||||
}
|
}
|
||||||
|
p.playTimeStopwatch.Reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlaybackManager) sendNowPlayingScrobble() {
|
func (p *PlaybackManager) sendNowPlayingScrobble() {
|
||||||
|
|||||||
Reference in New Issue
Block a user