Как непрерывно контролировать ритмбокс для смены треков, используя bash
Я хотел бы сделать то же самое, что описано здесь, но с использованием сценариев оболочки (предпочтительно в bash) вместо python. Кажется, что такая вещь должна быть возможна с помощью dbus-monitor
, но я не очень знаком с dbus, и мне не ясно, как взять концепции, описанные в решении вопроса о питоне, и применить их к инструменту dbus-monitor.
1 ответ
Вот самый простой способ найти:
#!/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
Кажется, работает хорошо.