Вот самый простой способ, который я мог найти:
#!/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
Он выводит примерно так:
Now playing: Daft Punk - Overture
Now playing: Daft Punk - The Grid
Он также печатает текущую воспроизводимую песню при запуске.Если это не то, что вы хотите, посмотрите на содержимое $line
и посмотрите, содержит ли оно NameAcquired
или playingUriChanged
.Если он содержит NameAcquired
, пропустите его.
Основное различие между версией Python и версией bash состоит в том, что версия Python использует DBus для получения информации о воспроизводимой песне.Я не мог найти хороший способ сделать это, используя bash, но rhythmbox-client --print-playing
, кажется, работает хорошо.