From 19858cedcda096df5bfc311a5a93b96b0b4aec79 Mon Sep 17 00:00:00 2001 From: Pierpaolo Frasa Date: Sun, 26 Jan 2014 02:14:11 +0100 Subject: [PATCH 1/4] save the time position before calling stop --- mopidy/core/playback.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index b2acb35a..d72ff6f9 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,13 @@ 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') From b52249130284d65747d001db8bbea658ea881b55 Mon Sep 17 00:00:00 2001 From: Pierpaolo Frasa Date: Sun, 26 Jan 2014 02:50:03 +0100 Subject: [PATCH 2/4] fix style issues --- mopidy/core/playback.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index d72ff6f9..3164e3b3 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -343,7 +343,8 @@ class PlaybackController(object): return listener.CoreListener.send( 'track_playback_ended', - tl_track=self.current_tl_track, time_position=time_position_before_stop) + 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') From 78c75af4e5c00bb5bc95e0c159d5aefaa02a9486 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 7 Feb 2014 00:51:27 +0100 Subject: [PATCH 3/4] docs: Update changelog and authors --- AUTHORS | 1 + docs/changelog.rst | 5 +++++ 2 files changed, 6 insertions(+) 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 89c37d9d..5e28f82a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -10,6 +10,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`) From 1ef11165832a35760679d5b1ff0be815be196205 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 7 Feb 2014 00:51:44 +0100 Subject: [PATCH 4/4] log: Fix error if no loglevels exists --- mopidy/utils/log.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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']