Как непрерывно отслеживать Rhythmbox для изменения пути с помощью Bash

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

  •  27-10-2019
  •  | 
  •  

Вопрос

Я хотел бы сделать то же самое, что и описано здесь, но с помощью сценариев оболочки (предпочтительно в Bash) вместо Python. Кажется, что такая вещь должна быть возможна, используя dbus-monitor, но я не очень знаком с DBU, и мне не ясно, как принять концепции, описанные в решении вопроса Python, и применить их к инструменту DBUS-Monitor.

Это было полезно?

Решение

Вот самый простой способ, которым я мог найти:

#!/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 использует DBU для получения информации о воспроизведении песни. Я не мог найти хорошего способа сделать это с помощью Bash, но rhythmbox-client --print-playing Кажется, работает хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top