使用Python通过DBus监控Clementine

2 投票
1 回答
767 浏览
提问于 2025-04-17 15:26

我想做的事情和这里解释的一样:

如何使用Python持续监控Rhythmbox的曲目变化

不过我想用Clementine来代替Rhythmbox。

问题是,我找不到可以给connect_to_signal方法用的playingUriChanged的对应项。

我用qdbus找到的唯一看起来相关的东西是

signal void org.freedesktop.MediaPlayer.TrackChange(QVariantMap)

但它需要一个参数。

我对DBus不太熟悉,所以任何帮助都很感激。

谢谢

1 个回答

0

它不需要输入参数,而是返回一个参数(哈希表)。

以下代码摘自 这个脚本

def TrackChange(Track):
    # use Track["URI"], Track["title"], Track["artist"] etc

def Connect(name):
    global root, player, tracklist

    # first we connect to the objects
    root_o = bus.get_object(name, "/")
    player_o = bus.get_object(name, "/Player")
    tracklist_o = bus.get_object(name, "/TrackList")

    # there is only 1 interface per object
    root = dbus.Interface(root_o, "org.freedesktop.MediaPlayer")
    tracklist  = dbus.Interface(tracklist_o, "org.freedesktop.MediaPlayer")
    player = dbus.Interface(player_o, "org.freedesktop.MediaPlayer")

    # connect to the TrackChange signal
    player_o.connect_to_signal("TrackChange", TrackChange, dbus_interface="org.freedesktop.MediaPlayer") 

撰写回答