2012-08-13 63 views
4

使用Ubuntu 12.04的Im。我想用Python访问Rhythymbox。如何使用Python获取Rhythmbox中当前播放的歌曲

这是我到目前为止已经着手:

伊夫通过这个网站 https://live.gnome.org/RhythmboxPlugins/WritingGuide走了,但它给出了如何编写插件细节,即时消息在现在没有兴趣。我经历了几个教程,告诉我这样做。

import dbus 
session_bus = dbus.SessionBus() 

proxy_obj = session_bus.get_object(
'org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player') 

但我收到以下错误

DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Rhythmbox was not provided by any .service files. 

可能有人请指出我的,我想达到什么样的方向是正确的?

+0

你是指什么访问?你想要做什么*具体*? – 2012-08-13 18:14:38

+0

我只想得到正在播放的歌曲的名称。 – Manoj 2012-08-13 18:17:34

+0

也许你可以看一下'/ usr/lib/rhythmbox/plugins/im-status/im-status.py'中的im-status插件,它会把歌曲的名字放在pidgin/empathy中 – solarc 2012-08-13 18:23:12

回答

1

我认为你遇到了Launchpad上描述的Rhythmbox DBus接口中的一个错误。 Tracker表示修复已经完成,但可能您的版本没有修复。

+0

它还是发生在“修复发布”之后很长时间 – NoBugs 2014-07-09 06:51:46

3

一种解决方法,通过使用lyricsdownloader.py是:

import subprocess 
import shlex 

proc = subprocess.Popen(shlex.split('rhythmbox-client --no-start --print-playing-format %tt'))) 
title, err = proc.communicate() 

注:这并不与Ubuntu 11.10,其出厂时没有Rhythmbox的客户端工作。

+0

如何捕获标题作为str?当我'打印标题'时,我得到'None'并且var测试为NoneType ... – 2013-02-09 08:07:39

+0

这很好,但是请注意可以有一些同名的歌曲,但是在不同的文件夹中(例如,它们在不同的年份被唱过,但它们具有相同的名称)。我尝试删除播放歌曲的方式,但问题是我无法弄清楚我应该删除哪首歌。 (并祝好运我可以删除另一首歌曲) – Tebe 2013-03-08 15:51:21

1

这可能会有用。 https://github.com/aliva/rhythmbox-microblogger

这是一个RhythmBox的twitter插件。所以,而不是叽叽喳喳和Gtk,你可以把目前的歌曲。

from gi.repository import RB 

RB.RhythmDBPropType.TITLE将给出你可以用来获得标题的枚举。

相关问题