Source code for omxplayer.dbus_connection
import dbus
[docs]class DBusConnectionError(Exception):
""" Connection error raised when DBusConnection can't set up a connection
"""
pass
[docs]class DBusConnection(object):
"""
Attributes:
proxy: The proxy object by which one interacts with a dbus object,
this makes communicating with a similar to that of communicating
with a POJO.
root_interface: org.mpris.MediaPlayer2 interface proxy object
player_interface: org.mpris.MediaPlayer2.Player interface proxy object
"""
def __init__(self, bus_address):
self.root_interface = None
self.player_interface = None
self._address = bus_address
self._bus = self._create_connection()
self.proxy = self._create_proxy()
def _create_connection(self):
return dbus.bus.BusConnection(self._address)
def _create_proxy(self):
try:
# introspection fails so it is disabled
proxy = self._bus.get_object('org.mpris.MediaPlayer2.omxplayer',
'/org/mpris/MediaPlayer2',
introspect=False)
self._create_media_interfaces_on_proxy(proxy)
return proxy
except dbus.DBusException:
raise DBusConnectionError('Could not get proxy object')
def _create_media_interfaces_on_proxy(self, proxy):
self.root_interface = self._interface(proxy, 'org.mpris.MediaPlayer2')
self.player_interface = self._interface(proxy,
'org.mpris.MediaPlayer2.Player')
self.properties_interface = self._interface(proxy,
'org.freedesktop.DBus.Properties')
def _interface(self, proxy, interface):
return dbus.Interface(proxy, interface)