在MediaPlay中使用dbus播放音乐专家

2024-06-07 10:15:02 发布

您现在位置:Python中文网/ 问答频道 /正文

这个python程序将从Mediapplayer播放一个播放列表。当一首歌曲结束或在键盘上键入后,播放列表将播放下一首歌曲。在

输入是:

#!/usr/bin/python
#-*-coding:ascii-*-

import dbus
import gobject

from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()

banshee = bus.get_object('org.mpris.MediaPlayer2.banshee',
               '/org/mpris/MediaPlayer2')
iface = dbus.Interface(banshee,'org.mpris.MediaPlayer2.Player')

loop = gobject.MainLoop()
def on_reply():
        print"Start"
def on_error():
        print"Error"
def next_song():
        print"Next Song"
        iface.Next(reply_handler=on_reply,
        error_handler=on_error)
        gobject.timeout_add(4,next_song)
def on_error(error):
        print"Error"
        loop.quit()
        next_song()
try:
        loop.run()
finally:
        print"End"
        iface.Stop() 

输出: 没什么

提前谢谢你


Tags: orgimportloopondeferrorreplynext
3条回答

这条路错了。正确的路径是:

女妖=bus.get_对象("org.bansheeproject.Banshee“,”/org/bansheeproject/Banshee/playeringine“)

在下面的page中,您将获得有关路径及其工作方式的更多信息。在

您可以使用d-feet查看该方法在您尝试使用的接口上是否可用。在

您还可以使用dbus-monitor查看总线上传递的消息。语法应该是这样的:

dbus-monitor  monitor  address <your_bus_address>

使用上面的命令,您将获得总线上的所有消息。要过滤,可以执行以下操作:

^{pr2}$

不能在筛选中使用部分接口/路径名。你可以随时进行一些高级过滤。在

如果该方法在该接口上不可用,或者试图使用错误的参数类型集调用它,则通常会出现此错误。在调用代码中还要检查函数签名。在

mdbus2应该给出可用方法的列表。取自this page

$ mdbus2 org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2
...
[METHOD]    org.mpris.MediaPlayer2.Player.Pause() -> ()
[METHOD]    org.mpris.MediaPlayer2.Player.PlayPause() -> ()
[METHOD]    org.mpris.MediaPlayer2.Player.Stop() -> ()
[METHOD]    org.mpris.MediaPlayer2.Player.Play() -> ()
...

调整示例以反映您与女妖的接口。我尝试安装Banshee和mdbus2来自己尝试,但是安装程序脚本失败了。在

您还可以尝试使用Python的内置工具进行内部检查。在

^{pr2}$

更好的是,在程序中删除类似的语句。您的代码体目前非常简单,您只需打印出dir()的结果。在

finally:
    print"End"
    dir(iface)
    iface.Stop()

相关问题 更多 >

    热门问题