Banshee: Как бы я установил рейтинг для конкретного трека на Banshee через DBus?

Я хотел бы установить "рейтинг" конкретной дорожки (то есть не только той, которая сейчас воспроизводится) на Banshee через интерфейс DBus?

3 ответа

Решение

Банши не выставляет рейтинговые функции через DBus.

Вы можете быстро просмотреть все функции, которые он предоставляет, используя такие приложения, как d-foot[1]. Убедитесь, что экземпляр интересующего вас приложения (например, Banshee в этом случае) запущен.

Уже есть сообщение об ошибке, запрашивающее добавить функциональность оценки [2] в интерфейс DBus. Вы можете подписаться на него.

  1. https://fedorahosted.org/d-feet/
  2. https://bugzilla.gnome.org/show_bug.cgi?id=579754

Banshee поддерживает рейтинг через командную строку с прошлого года.

banshee --set-rating={1;2;3;4;5}

См. Отчет об ошибке для получения дополнительных опций: Добавить рейтинг предметов в интерфейс DBus

К сожалению, разработчик не реализовал метод GET, поэтому нет общего способа выполнить команду "Оценить текущую дорожку 1 звезда вверх / вниз", намного меньше, чем конкретная дорожка. Кто-нибудь написал скрипт, который предоставляет эту функцию? Тем не менее, я не нашел никакого решения изменить свойство D-Bus через командную строку. Наконец, вот мой обходной путь для оценки текущего проигранного трека.

#!/bin/bash

#read current TrackRating
R=$(qdbus org.mpris.MediaPlayer2.banshee /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get org.mpris.MediaPlayer2.Player Metadata | grep 'userRating' | tr -d '/xesam:userRating: ')

case $R in 
 '' )    R=0 ;;
 '0.2' ) R=1 ;;
 '0.4' ) R=2 ;;
 '0.6' ) R=3 ;;
 '0.8' ) R=4 ;;
 '1'   ) R=5 ;;
esac

case $1 in
 'inc' )    [ $R -lt 5 ] 
            banshee --set-rating=$(($R+1)) ;;
 'dec' )    [ $R -gt 0 ]
            banshee --set-rating=$(($R-1)) ;;
 'res' ) banshee --set-rating=3 ;;
 'min' ) banshee --set-rating=0 ;;
 'max' ) banshee --set-rating=5 ;;
esac

Опции:

  • inc -> увеличить рейтинг на единицу, если это возможно
  • dec -> уменьшить рейтинг на единицу, если это возможно
  • res -> сбросить рейтинг до трех звезд
  • мин -> установить рейтинг на ноль звезд
  • Макс -> установить рейтинг на пять звезд

Пока Banshee не будет предоставлять данные для конкретного трека, это мой лучший выбор.

Другие вопросы по тегам