From ec94449a63d59afea4cdb2f62bd742926b44b827 Mon Sep 17 00:00:00 2001 From: Alexandre Petitjean Date: Thu, 15 Jan 2015 22:25:34 +0100 Subject: [PATCH] Handle tags_changed in Core and send event to CoreListener --- mopidy/core/actor.py | 20 ++++++++++++++++++++ mopidy/core/listener.py | 11 +++++++++++ 2 files changed, 31 insertions(+) diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index 75c06f69..ccd1e4c5 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -102,6 +102,26 @@ class Core( # Forward event from mixer to frontends CoreListener.send('mute_changed', mute=mute) + def tags_changed(self, tags): + # Should return only one audio instance + audios = pykka.ActorRegistry.get_by_class(audio.Audio) + + if audios and len(audios) == 1: + audio_proxy = audios[0].proxy() + + # Gets metadata + future = audio_proxy.get_current_tags() + tags_data = future.get() + if not tags_data or not isinstance(tags_data, dict): + return + + # Convert to track and set playback + track = audio.utils.convert_tags_to_track(tags_data) + self.playback.current_track = track + + # Send event to frontends + CoreListener.send('track_metadata_changed', track_metadata=track) + class Backends(list): def __init__(self, backends): diff --git a/mopidy/core/listener.py b/mopidy/core/listener.py index 2c027e1b..c94037b2 100644 --- a/mopidy/core/listener.py +++ b/mopidy/core/listener.py @@ -163,3 +163,14 @@ class CoreListener(listener.Listener): :type time_position: int """ pass + + def track_metadata_changed(self, track_metadata): + """ + Called whenever current track's metadata changed + + *MAY* be implemented by actor. + + :param track_metadata: the track with metadata + :type track_metadata: :class:`mopidy.models.Track` + """ + pass