Come monitorare continuamente Rhythmbox per il cambiamento traccia utilizzando bash

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

  •  27-10-2019
  •  | 
  •  

Domanda

Mi piacerebbe fare la stessa cosa come è descritto qui , ma utilizzando shell scripting (preferibilmente in bash) anziché pitone. Sembra una cosa del genere dovrebbe essere possibile utilizzando dbus-monitor, ma io non sono molto familiare con dbus, e non è chiaro a me come prendere i concetti descritti nella soluzione della questione pitone e applicarle allo strumento dbus-Monitor .

È stato utile?

Soluzione

Ecco il modo più semplice che ho trovato:

#!/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

Si produce un output simile a questo:

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

Esso stampa anche la canzone attualmente in riproduzione quando avviato. Se questo non è ciò che si vuole, sguardo al contenuto della $line e vedere se contiene NameAcquired o playingUriChanged. Se contiene NameAcquired, saltare.

La differenza principale tra la versione di Python e questa versione bash è che la versione Python usa DBus per ottenere le informazioni di brano in riproduzione. Non riuscivo a trovare un buon modo per farlo usando bash, ma rhythmbox-client --print-playing sembra funzionare bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top