Os traigo esta curiosidad para aquellos que quieran saber que está reproduciendo vuestro reproductor favorito, se trata de un simple script que hace uso de dbus para extraer los datos necesarios, a saber, artista, titulo y album y mostrarlos a nivel de terminal o en un cuadro de dialogo.
Lo primero que debemos hacer es buscar con qdbus lo que está enviando el reproductor a traves de dbus. (He usado qdbus contenido en qt5-tools, en ArchLinux).
Para ello lanzamos una terminal y escribmos en ella lo siguiente (con el reproductor en marcha y reproduciendo):
qdbus | grep MediaPlayer2
y así nos saldría algo parecido a esto:
org.mpris.MediaPlayer2.cantata
Una vez identificado el reproductor, es cuestión de ir navegando por las ramas, se puede hacer con tab, ejemplo
qdbus org.mpris.MediaPlayer2.cantata <TAB>
y nos irá saliendo algo parecido a esto:
$ qdbus org.mpris.MediaPlayer2.cantata /MenuBar
/ /MenuBar/1 /org /org/mpris/MediaPlayer2
/MenuBar /cantata /org/mpris
Como cada reproductor puede ser diferente, es ir buscando concretamente la rama en la que está los campos artist, title y album.
Os dejo un ejemplo de un script que me hice a tal proposito para el reproductor Cantata, donde os podéis hacer una idea de como funciona.
#!/bin/sh
artista=`qdbus org.mpris.MediaPlayer2.cantata /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata | grep xesam:artist | cut -b 14-`
titulo=`qdbus org.mpris.MediaPlayer2.cantata /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata | grep xesam:title | cut -b 14-`
album=`qdbus org.mpris.MediaPlayer2.cantata /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata | grep xesam:album: | cut -b 14-`
out="Ahora suena: $titulo de $artista del album $album"
echo $out
echo $out > /tmp/nowplaying
kdialog --textbox /tmp/nowplaying
#zenity --text-info --filename=/tmp/nowplaying
El primer bloque tenemos 3 variables, artista, titulo y album, los cuales van a almacenar lo recogido por qdbus. El segundo bloque lo vamos a hacer es crear otra variable, out, que va a conterner una cadena de texto con la información que quieras y con las otras tres variables anteriormente creadas y almacenadas. Al final, usamos la variable out para mostrar todo junto en dos partes, la primera lo muestra a nivel de terminal, la otra almacena en un fichero la salida de out y hacemos uso de kdialog o zenity mostrando su contenido.
Al final os mostrará lo que se está reproduciendo en vuestra terminal y si queréis un dialogo gráfico, podréis usar kdialog para KDE Plasma o Zenity para entornos GTK (Gnome, Xfce, etc...)
Espero que os haya gustado.
Me conoces, siempre estoy rizando el rizo. Tengo un pequeño script para buscar el reproductor. Así puede utilizar cualquier reproductor compatible con mpris. No sé cómo funciona cuando hay varios (puedes quitar el head -1 para ver el listado de todos). De todas formas, así no estamos limitados a cantata, podemos usar vlc, spotify, clementine y muchos más...
player="$(dbus-send --session --dest=org.freedesktop.DBus \
--type=method_call --print-reply /org/freedesktop/DBus \
org.freedesktop.DBus.ListNames | sed -En 's/.*org.mpris.MediaPlayer2.([a-z]*).*/\1/p' | head -1)"
Saludos!!!