Python 如何设置在节奏盒2.96中播放的歌曲的分级?
我正在尝试创建一个Python插件,它将在Rhythmbox2.96中设置当前播放歌曲的等级。Rhythmbox2.96似乎不再允许您使用API(Python模块)来设置歌曲的评级;与玩家相关的行为已被放弃,取而代之的是MPRIS 然后我尝试将dbus与MPRIS结合使用,但MPRIS也没有设置歌曲评级的规范。经过大量的挖掘,我在Rhythmbox代码库中找到了它,并将其改编成一个测试脚本 它可以工作,但是SetEntryProperties方法会导致RhythmathBox冻结约30秒。下面是Python脚本Python 如何设置在节奏盒2.96中播放的歌曲的分级?,python,ubuntu,gio,rhythmbox,Python,Ubuntu,Gio,Rhythmbox,我正在尝试创建一个Python插件,它将在Rhythmbox2.96中设置当前播放歌曲的等级。Rhythmbox2.96似乎不再允许您使用API(Python模块)来设置歌曲的评级;与玩家相关的行为已被放弃,取而代之的是MPRIS 然后我尝试将dbus与MPRIS结合使用,但MPRIS也没有设置歌曲评级的规范。经过大量的挖掘,我在Rhythmbox代码库中找到了它,并将其改编成一个测试脚本 它可以工作,但是SetEntryProperties方法会导致RhythmathBox冻结约30秒。下面是
说明:
rhythmbox -D rate
execfile('/path/to/rate.py')
打印的例外情况是:
Desktop/test2.py:41: (<class 'gi._glib.GError'>, GError('Timeout was
reached',), <traceback object at 0x913e554>)
桌面/test2.py:41:(,GError('超时为
到达',),)
我对Python/dbus的了解是有限的,所以我不明白为什么会发生这种错误。我将非常感谢您的帮助
此外,如果您知道一种更好的方法,可以通过代码在Rhythmbox中设置歌曲的评级,那么它也将受到欢迎
我正在使用Ubuntu12.04,如果它有什么不同的话。github上的软件确实能够设置歌曲等级,但它是在Rhyththmbox执行环境之外执行的
发件人:
如果我试图直接在Rhythmbox插件中运行该代码,它会再次冻结。然而,在Rhythmbox环境之外运行它工作得非常好。我觉得这个很好,所以我会把它作为答案 在插件中设置分级
Rhythmbox 2.9x确实提供了一个API来设置评级-除非您使用外部程序(如Rhythmbox托盘图标),否则无需通过dbus调用
评级在其内部数据库中作为双类型值保存。使用RhythydbEntry,您可以通过
rating = entry.get_double(RB.RhythmDBPropType.RATING)
评级=条目。获取双精度(RB.RhythmDBPropType.rating)
要设置额定值,您需要使用RYTHOMDB entry\u set功能:
db=self.shell.props.db
db.entry_set(entry, RB.RhythmDBPropType.RATING, rating)
db=self.shell.props.db
db.entry_集合(entry,RB.THERMATDBPROPTYPE.RATING,RATING)
获取和设置评分的示例代码可以在插件(coverart_album.py)中找到。刚刚看到您对我的问题的评论。我对这个很感兴趣。。。如果你今晚还没有发现,我保证会搜索它(当然是出于我自己自私的原因:)。如果您已经知道,请回答您自己的问题,以便其他人可以看到解决方案:D@Mamsaac-谢谢你提醒我,我已经更新了答案,虽然还不完美。 rating = entry.get_double(RB.RhythmDBPropType.RATING) db=self.shell.props.db db.entry_set(entry, RB.RhythmDBPropType.RATING, rating)