diff --git a/AUTHORS b/AUTHORS index 6853d5ab..d7841635 100644 --- a/AUTHORS +++ b/AUTHORS @@ -37,3 +37,4 @@ - Simon de Bakker - Arnaud Barisain-Monrose - nathanharper +- Pierpaolo Frasa diff --git a/docs/changelog.rst b/docs/changelog.rst index 9f050f64..ea3af657 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -16,6 +16,11 @@ v0.18.2 (UNRELEASED) Bug fix release. +- Fix the ``time_position`` field of the ``track_playback_ended`` event, which + has been always 0 since v0.18.0. This made scrobbles by Mopidy-Scrobbler not + be persisted by Last.fm, because Mopidy reported that you listened to 0 + seconds of each track. (Fixes: :issue:`674`) + - Fix the log setup so that it is possible to increase the amount of logging from a specific logger using the ``loglevels`` config section. (Fixes: :issue:`684`) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index b2acb35a..3164e3b3 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -306,9 +306,10 @@ class PlaybackController(object): """ if self.state != PlaybackState.STOPPED: backend = self._get_backend() + time_position_before_stop = self.time_position if not backend or backend.playback.stop().get(): self.state = PlaybackState.STOPPED - self._trigger_track_playback_ended() + self._trigger_track_playback_ended(time_position_before_stop) if clear_current_track: self.current_tl_track = None @@ -336,13 +337,14 @@ class PlaybackController(object): 'track_playback_started', tl_track=self.current_tl_track) - def _trigger_track_playback_ended(self): + def _trigger_track_playback_ended(self, time_position_before_stop): logger.debug('Triggering track playback ended event') if self.current_tl_track is None: return listener.CoreListener.send( 'track_playback_ended', - tl_track=self.current_tl_track, time_position=self.time_position) + tl_track=self.current_tl_track, + time_position=time_position_before_stop) def _trigger_playback_state_changed(self, old_state, new_state): logger.debug('Triggering playback state change event') diff --git a/mopidy/utils/log.py b/mopidy/utils/log.py index 80bf3997..d106af8d 100644 --- a/mopidy/utils/log.py +++ b/mopidy/utils/log.py @@ -78,7 +78,8 @@ def setup_console_logging(config, verbosity_level): if verbosity_level > max(LOG_LEVELS.keys()): verbosity_level = max(LOG_LEVELS.keys()) - verbosity_filter = VerbosityFilter(verbosity_level, config['loglevels']) + verbosity_filter = VerbosityFilter( + verbosity_level, config.get('loglevels', {})) if verbosity_level < 1: log_format = config['logging']['console_format']