Port mpc
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
38abd01d7c
commit
efe929ead7
1 changed files with 68 additions and 19 deletions
|
@ -1,22 +1,71 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env python3
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
[ $(mpc | wc -l) -eq 1 ] && {
|
import dbus
|
||||||
printf '<span color="#7f7f7f">\uf9da</span>'
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
title=$(mpc | head -n1 | tr -cd "[:print:]" | sed 's/&/\&/g; s/</\</g; s/>/\>/g')
|
from block import *
|
||||||
state=$(mpc | grep '^\[' | sed -E 's/^\[(.+)\].*/\1/')
|
|
||||||
|
|
||||||
case ${state} in
|
ICON = "\uf001"
|
||||||
playing)
|
|
||||||
printf '\uf909 <span color="#8faafc">%s</span>' "${title}"
|
|
||||||
;;
|
class MPD(Block):
|
||||||
paused)
|
def __init__(self, icon=None, icon_color=None):
|
||||||
printf '\uf8e3 <span color="#7f7f7f">%s</span>' "${title}"
|
super().__init__(icon, icon_color)
|
||||||
;;
|
|
||||||
*)
|
self.bus = dbus.SessionBus()
|
||||||
printf '<span color="#dd0000">State: %s Title: %s<span>' ${state} "${title}"
|
mpd_obj = self.bus.get_object(
|
||||||
;;
|
"org.mpris.MediaPlayer2.mpd",
|
||||||
esac
|
"/org/mpris/MediaPlayer2",
|
||||||
|
)
|
||||||
|
self.mpd_props = dbus.Interface(
|
||||||
|
mpd_obj,
|
||||||
|
'org.freedesktop.DBus.Properties',
|
||||||
|
)
|
||||||
|
self.mpd_player = dbus.Interface(
|
||||||
|
mpd_obj,
|
||||||
|
'org.mpris.MediaPlayer2.Player',
|
||||||
|
)
|
||||||
|
|
||||||
|
def execute(self):
|
||||||
|
if self.button_is(BTN_LEFT):
|
||||||
|
self.mpd_player.PlayPause()
|
||||||
|
pass
|
||||||
|
|
||||||
|
if not self.is_playing():
|
||||||
|
self.set_icon_color(COLOR_SECONDARY)
|
||||||
|
return ""
|
||||||
|
|
||||||
|
return self.get_artist_title()
|
||||||
|
|
||||||
|
def is_playing(self):
|
||||||
|
status = self.mpd_props.Get(
|
||||||
|
'org.mpris.MediaPlayer2.Player',
|
||||||
|
'PlaybackStatus',
|
||||||
|
)
|
||||||
|
|
||||||
|
return status == 'Playing'
|
||||||
|
|
||||||
|
def get_artist_title(self):
|
||||||
|
meta = self.mpd_props.Get(
|
||||||
|
'org.mpris.MediaPlayer2.Player',
|
||||||
|
'Metadata',
|
||||||
|
)
|
||||||
|
|
||||||
|
if meta.get('xesam:artist')[0] == 'unknown artist' and ' - ' in meta.get('xesam:title'):
|
||||||
|
return self.safe_text(meta.get('xesam:title'))
|
||||||
|
|
||||||
|
return self.safe_text("{} - {}".format(
|
||||||
|
meta.get('xesam:artist')[0],
|
||||||
|
meta.get('xesam:title'),
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
block = MPD(ICON)
|
||||||
|
block.render()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|
Loading…
Reference in a new issue