Handle tags_changed in Core and send event to CoreListener

This commit is contained in:
Alexandre Petitjean 2015-01-15 22:25:34 +01:00
parent bd7ddcf7ea
commit ec94449a63
2 changed files with 31 additions and 0 deletions

View File

@ -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):

View File

@ -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