Skip to main content
 首页 » 编程设计

python之使用 Python 使用 DBus 监控 Clementine

2025年05月04日12Free-Thinker

我想做与这里解释的完全相同的事情:

How to continuously monitor rhythmbox for track change using python

但使用 Clementine 而不是 Rhythmbox。

问题是,我无法找到 playingUriChanged 的等价物以提供给 connect_to_signal 方法。

我能找到的唯一与 qdbus 相关的东西是

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

但它需要一个参数。

我不熟悉 DBus,因此不胜感激。

谢谢

请您参考如下方法:

它不接受参数,它返回参数( HashMap )

从 this script 中提取的代码:

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")