From ace6532d81c54440cab5936d615631232b8a3ec2 Mon Sep 17 00:00:00 2001 From: Denis Fomin <fominde@gmail.com> Date: Tue, 4 Oct 2011 20:50:21 +0300 Subject: [PATCH] add new plugin. mpris2 support --- mpris2_support/__init__.py | 1 + mpris2_support/manifest.ini | 7 +++++ mpris2_support/mpris2_support.py | 52 ++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 mpris2_support/__init__.py create mode 100644 mpris2_support/manifest.ini create mode 100644 mpris2_support/mpris2_support.py diff --git a/mpris2_support/__init__.py b/mpris2_support/__init__.py new file mode 100644 index 00000000..9b35e379 --- /dev/null +++ b/mpris2_support/__init__.py @@ -0,0 +1 @@ +from mpris2_support import Mpris2Plugin diff --git a/mpris2_support/manifest.ini b/mpris2_support/manifest.ini new file mode 100644 index 00000000..997154a4 --- /dev/null +++ b/mpris2_support/manifest.ini @@ -0,0 +1,7 @@ +[info] +name: MPRIS2 support +short_name: mpris2_support +version: 0.1 +description: MPRIS2 support +authors = Denis Fomin <fominde@gmail.com> +homepage = http://trac-plugins.gajim.org/wiki diff --git a/mpris2_support/mpris2_support.py b/mpris2_support/mpris2_support.py new file mode 100644 index 00000000..7ecea214 --- /dev/null +++ b/mpris2_support/mpris2_support.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- + +import gtk +import gobject + +from common import gajim +from plugins import GajimPlugin +from plugins.helpers import log_calls +from plugins.plugin import GajimPluginException +from common import dbus_support + +if dbus_support.supported: + from music_track_listener import MusicTrackInfo, MusicTrackListener + +class Mpris2Plugin(GajimPlugin): + @log_calls('Mpris2Plugin') + def init(self): + self.description = _('MPRIS2 support') + self.config_dialog = None + self.artist = self.title = self.source = '' + self.listener = MusicTrackListener().get() + + @log_calls('NowListenPlugin') + def activate(self): + self.bus = dbus_support.session_bus.SessionBus() + self.bus.add_signal_receiver(self.properties_changed, + "PropertiesChanged", "org.freedesktop.DBus.Properties") + + @log_calls('Mpris2Plugin') + def deactivate(self): + self.bus.remove_signal_receiver(self.properties_changed, + "PropertiesChanged", "org.freedesktop.DBus.Properties") + + def properties_changed(self,*args,**kw): + if args[0] != 'org.mpris.MediaPlayer2.Player': + return + if 'PlaybackStatus' in args[1]: + if args[1]['PlaybackStatus'] in ['Paused', 'Stopped']: + self.title = self.artist = self.source = '' + self.listener.emit('music-track-changed', None) + return + if 'Metadata' not in args[1]: + return + + data = args[1]['Metadata'] + info = MusicTrackInfo() + info.title = data.get("xesam:title", '') + info.album = data.get("xesam:album", '') + info.artist = data.get("xesam:artist", [''])[0] + info.duration = int(data.get('mpris:length', 0)) + info.track_number = int(data.get('xesam:trackNumber', 0)) + self.listener.emit('music-track-changed', info) -- GitLab