2

我想在使用 D-Bus 的正在运行的 Totem 实例中找到媒体文件当前暂停(或播放)的确切时间。准确地说,我想要的可以通过以下命令从 Totem python 控制台(如果插件存在并启用)中获得:

>>> print totem_object.props.current_time
732616

我的理解是毫秒。

到目前为止:我以前从未使用过 D-Bus,所以我正在阅读 D-Bus 和 python-dbus 文档。我也启动了 D-Feet,发现org.gnome.Totem总线名称和/Factory对象我可以使用org.freedesktop.DBus.Properties接口方法。

我目前在这一点上:

>>> import dbus
>>> seb= dbus.SessionBus()
>>> t= seb.get_object('org.gnome.Totem', '/Factory')
>>> tif= dbus.Interface(t, 'org.freedesktop.DBus.Properties')
>>> tif.GetAll('')
dbus.Dictionary({}, signature=dbus.Signature('sv'))

我什至找不到合适的方法,所以任何帮助都将不胜感激。

4

1 回答 1

4

我目前正在出于不同的原因研究 API,我需要检索正在播放的路径或位置,我偶然发现了这个问题。

首先,您需要激活 D-Bus 服务插件(编辑 -> 插件),它将公开该org.mpris.Totem服务。然后在/Player对象和org.freedesktop.MediaPlayer接口上可以使用PositionGet()方法来检索当前位置。

这会返回totem.props.current_time您所说的。

这是一些代码:

import dbus

T_SERVICE_NAME = "org.mpris.Totem"
T_OBJECT_PATH = "/Player"
T_INTERFACE = "org.freedesktop.MediaPlayer"

session_bus= dbus.SessionBus()

totem = session_bus.get_object(T_SERVICE_NAME, T_OBJECT_PATH)
totem_mediaplayer = dbus.Interface(totem, dbus_interface=T_INTERFACE)

print totem_mediaplayer.PositionGet()

至于整个org.gnome.Totem服务和 Get/GetAll 方法,我也不了解它们的全部目的。看起来它与 DBus 本身的关系比 Totem 更重要。

参考

  1. http://git.gnome.org/browse/totem/tree/src/plugins/dbusservice/dbusservice.py
  2. http://developer.gnome.org/totem/stable/TotemObject.html
于 2011-03-31T01:18:19.827 回答