Abstract the dbus string constants.
This commit is contained in:
parent
34e87927de
commit
00a434774d
@ -8,6 +8,14 @@ from i3pystatus import IntervalModule, formatp
|
|||||||
from i3pystatus.core.util import TimeWrapper
|
from i3pystatus.core.util import TimeWrapper
|
||||||
|
|
||||||
|
|
||||||
|
class Dbus:
|
||||||
|
obj_dbus = "org.freedesktop.DBus"
|
||||||
|
path_dbus = "/org/freedesktop/DBus"
|
||||||
|
obj_player = "org.mpris.MediaPlayer2"
|
||||||
|
path_player = "/org/mpris/MediaPlayer2"
|
||||||
|
intf_player = obj_player + ".Player"
|
||||||
|
|
||||||
|
|
||||||
class NoPlayerException(Exception):
|
class NoPlayerException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -89,11 +97,11 @@ https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
|
|||||||
old_player = None
|
old_player = None
|
||||||
|
|
||||||
def find_player(self):
|
def find_player(self):
|
||||||
obj = dbus.SessionBus().get_object("org.freedesktop.DBus", "/org/freedesktop/DBus")
|
obj = dbus.SessionBus().get_object(Dbus.obj_dbus, Dbus.path_dbus)
|
||||||
|
|
||||||
def get_players(methodname):
|
def get_players(methodname):
|
||||||
method = obj.get_dbus_method(methodname, 'org.freedesktop.DBus')
|
method = obj.get_dbus_method(methodname, Dbus.obj_dbus)
|
||||||
return [a for a in method() if a.startswith("org.mpris.MediaPlayer2.")]
|
return [a for a in method() if a.startswith(Dbus.obj_player + ".")]
|
||||||
|
|
||||||
players = get_players('ListNames')
|
players = get_players('ListNames')
|
||||||
if not players:
|
if not players:
|
||||||
@ -107,23 +115,23 @@ https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
|
|||||||
|
|
||||||
def get_player(self):
|
def get_player(self):
|
||||||
if self.player:
|
if self.player:
|
||||||
player = "org.mpris.MediaPlayer2." + self.player
|
player = Dbus.obj_player + "." + self.player
|
||||||
try:
|
try:
|
||||||
return dbus.SessionBus().get_object(player, "/org/mpris/MediaPlayer2")
|
return dbus.SessionBus().get_object(player, Dbus.path_player)
|
||||||
except dbus.exceptions.DBusException:
|
except dbus.exceptions.DBusException:
|
||||||
raise NoPlayerException()
|
raise NoPlayerException()
|
||||||
else:
|
else:
|
||||||
player = self.find_player()
|
player = self.find_player()
|
||||||
return dbus.SessionBus().get_object(player, "/org/mpris/MediaPlayer2")
|
return dbus.SessionBus().get_object(player, Dbus.path_player)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
try:
|
try:
|
||||||
player = self.get_player()
|
player = self.get_player()
|
||||||
properties = dbus.Interface(player, "org.freedesktop.DBus.Properties")
|
properties = dbus.Interface(player, Dbus.obj_dbus + ".Properties")
|
||||||
|
|
||||||
def get_prop(name, default=None):
|
def get_prop(name, default=None):
|
||||||
try:
|
try:
|
||||||
return properties.Get("org.mpris.MediaPlayer2.Player", name)
|
return properties.Get(Dbus.intf_player, name)
|
||||||
except dbus.exceptions.DBusException:
|
except dbus.exceptions.DBusException:
|
||||||
return default
|
return default
|
||||||
|
|
||||||
@ -179,7 +187,7 @@ https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
|
|||||||
|
|
||||||
def playpause(self):
|
def playpause(self):
|
||||||
try:
|
try:
|
||||||
dbus.Interface(self.get_player(), "org.mpris.MediaPlayer2.Player").PlayPause()
|
dbus.Interface(self.get_player(), Dbus.intf_player).PlayPause()
|
||||||
except NoPlayerException:
|
except NoPlayerException:
|
||||||
return
|
return
|
||||||
except dbus.exceptions.DBusException:
|
except dbus.exceptions.DBusException:
|
||||||
@ -187,7 +195,7 @@ https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
|
|||||||
|
|
||||||
def next_song(self):
|
def next_song(self):
|
||||||
try:
|
try:
|
||||||
dbus.Interface(self.get_player(), "org.mpris.MediaPlayer2.Player").Next()
|
dbus.Interface(self.get_player(), Dbus.intf_player).Next()
|
||||||
except NoPlayerException:
|
except NoPlayerException:
|
||||||
return
|
return
|
||||||
except dbus.exceptions.DBusException:
|
except dbus.exceptions.DBusException:
|
||||||
@ -195,7 +203,7 @@ https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
|
|||||||
|
|
||||||
def player_command(self, command, *args):
|
def player_command(self, command, *args):
|
||||||
try:
|
try:
|
||||||
interface = dbus.Interface(self.get_player(), "org.mpris.MediaPlayer2.Player")
|
interface = dbus.Interface(self.get_player(), Dbus.intf_player)
|
||||||
getattr(interface, command)(*args)
|
getattr(interface, command)(*args)
|
||||||
except NoPlayerException:
|
except NoPlayerException:
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user