So überwachen Sie die Rhythmbox kontinuierlich für die Veränderung der Spurveränderung mit Bash

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

  •  27-10-2019
  •  | 
  •  

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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top