add new plugin. mpris2 support
This commit is contained in:
1
mpris2_support/__init__.py
Normal file
1
mpris2_support/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from mpris2_support import Mpris2Plugin
|
||||||
7
mpris2_support/manifest.ini
Normal file
7
mpris2_support/manifest.ini
Normal file
@@ -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
|
||||||
52
mpris2_support/mpris2_support.py
Normal file
52
mpris2_support/mpris2_support.py
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user