So überwachen Sie die Rhythmbox kontinuierlich für die Veränderung der Spurveränderung mit Bash
Frage
Ich würde gerne dasselbe tun wie beschrieben hier, aber mit Shell -Skripten (vorzugsweise in Bash) anstelle von Python. Es scheint, als ob so etwas möglich sein sollte, wenn man benutzt wird dbus-monitor
, aber ich bin mit DBUS nicht sehr vertraut, und es ist mir nicht klar, wie ich die in der Lösung für die Python-Frage beschriebenen Konzepte nimmt und sie auf das DBus-Monitor-Tool anwendet.
Lösung
Hier ist der einfachste Weg, den ich finden konnte:
#!/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
Es erzeugt die Ausgabe wie diese:
Now playing: Daft Punk - Overture
Now playing: Daft Punk - The Grid
Es druckt auch das derzeit gespielte Lied, wenn er gestartet ist. Wenn Sie das nicht wollen, schauen Sie sich den Inhalt von an $line
und sehen, ob es enthält NameAcquired
oder playingUriChanged
. Wenn es enthält NameAcquired
, überspring es.
Der Hauptunterschied zwischen der Python -Version und dieser Bash -Version besteht darin, dass die Python -Version DBUs verwendet, um die Songinformationen zu erhalten. Ich konnte keinen guten Weg finden, um das mit Bash zu tun, aber rhythmbox-client --print-playing
scheint gut zu funktionieren.