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.