Comment surveiller en permanence Rhythmbox pour le changement de piste en utilisant bash

StackOverflow https://stackoverflow.com/questions/5344390

  •  27-10-2019
  •  | 
  •  

Question

Je voudrais faire la même chose que décrit ici , mais en utilisant les scripts shell (de préférence en bash) au lieu de python. Il semble qu'une telle chose devrait être possible en utilisant dbus-monitor, mais je ne suis pas très familier avec dbus, et il est pas clair pour moi comment prendre les concepts décrits dans la solution à la question de python et de les appliquer à l'outil dbus-moniteur .

Était-ce utile?

La solution

Voici la façon la plus simple que je pouvais trouver:

#!/bin/bash

interface=org.gnome.Rhythmbox.Player
member=playingUriChanged

# listen for playingUriChanged DBus events,
# each time we enter the loop, we just got an event
# so handle the event, e.g. by printing the artist and title
# see rhythmbox-client --print-playing-format for more output options

dbus-monitor --profile "interface='$interface',member='$member'" |
while read -r line; do
    printf "Now playing: "
    rhythmbox-client --print-playing
done

Il produit une sortie comme ceci:

Now playing: Daft Punk - Overture
Now playing: Daft Punk - The Grid

Il imprime aussi la chanson en cours de lecture après avoir démarré. Si ce n'est pas ce que vous voulez, regardez le contenu de $line et voir si elle contient NameAcquired ou playingUriChanged. Si elle contient NameAcquired, sauter.

La principale différence entre la version Python et cette version bash est que la version Python utilise DBus pour obtenir les informations de la chanson de jeu. Je ne pouvais pas trouver une bonne façon de le faire en utilisant bash, mais rhythmbox-client --print-playing semble bien fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top