Python 如何设置在节奏盒2.96中播放的歌曲的分级?

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秒。下面是

我正在尝试创建一个Python插件,它将在Rhythmbox2.96中设置当前播放歌曲的等级。Rhythmbox2.96似乎不再允许您使用API(Python模块)来设置歌曲的评级;与玩家相关的行为已被放弃,取而代之的是MPRIS

然后我尝试将dbus与MPRIS结合使用,但MPRIS也没有设置歌曲评级的规范。经过大量的挖掘,我在Rhythmbox代码库中找到了它,并将其改编成一个测试脚本

它可以工作,但是SetEntryProperties方法会导致RhythmathBox冻结约30秒。下面是Python脚本


说明:

  • 将代码复制到名为rate.py的文件中

  • 使用从终端启动控制盒

    rhythmbox -D rate
    
  • 在Rhythmbox中,从插件启用Python控制台

  • 启动Python控制台并运行

       execfile('/path/to/rate.py')
    
  • 您将在终端和节奏框中看到打印输出冻结约20-30秒


  • 打印的例外情况是:

     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)