'http://specifications.freedesktop.org/mpris-spec/latest/Track_List_Interface.html#Mapping:Metadata_Map'

def update(self, interface_name, changed_properties, invalidated_properties):

    if (not self.configured):
        return True
    olddisplaytext = self.displaytext
    self.displaytext = ''
    metadata = None
    playbackstatus = None
    metadata = changed_properties.get('Metadata')
    playbackstatus = changed_properties.get('PlaybackStatus')
    if metadata:
        self.is_playing = True
        self.displaytext = '    -    '.join([(metadata.get(x) if isinstance(metadata.get(x), dbus.String) else '    +    '.join([y for y in metadata.get(x) if isinstance(y, dbus.String)])) for x in self.display_metadata if metadata.get(x)])
        self.displaytext.replace('\n', '')
    if playbackstatus:
        if ((playbackstatus == 'Paused') and (self.stop_pause_text is not None)):
            self.is_playing = False
            self.displaytext = self.stop_pause_text
        elif ((playbackstatus == 'Paused') and olddisplaytext):
            self.is_playing = False
            self.displaytext = 'Paused:    {}'.format(olddisplaytext)
        elif (playbackstatus == 'Paused'):
            self.is_playing = False
            self.displaytext = 'Paused'
        elif ((playbackstatus == 'Playing') and (not self.displaytext) and olddisplaytext):
            self.is_playing = True
            self.displaytext = olddisplaytext.replace('Paused:    ', '')
        elif ((playbackstatus == 'Playing') and (not self.displaytext) and (not olddisplaytext)):
            self.is_playing = True
            self.displaytext = 'No    metadata    for    current    track'
        elif ((playbackstatus == 'Playing') and self.displaytext):
            pass
        else:
            self.is_playing = False
            self.displaytext = ''
    if (self.scroll_chars and self.scroll_interval):
        if self.scroll_timer:
            self.scroll_timer.cancel()
        self.scrolltext = self.displaytext
        self.scroll_counter = self.scroll_wait_intervals
        self.scroll_timer = self.timeout_add(self.scroll_interval, self.scroll_text)
        return
    if (self.text != self.displaytext):
        self.text = self.displaytext
        self.bar.draw()
