如何在Rhythmbox中查询数据

2024-09-30 06:32:54 发布

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

我正在使用Ubuntu12.04,并试图编写一个python插件来查询Rhythmbox数据库。Rhythmbox的版本是v2.96,但是这个问题在v2.97中也会出现。当我执行python查询时,Ubuntu会因为一个分段错误而崩溃。在

我需要确认以下是正确的,如果我发现了一个特定于Ubuntu的bug或者我误解了如何正确地查询。如果其他人使用另一个发行版可以确认-这将是最受欢迎的。在

我已经在bugzilla上提交了一份关于分段错误的bug report。然而,我的问题并不是严格意义上的,而是要确认正确的python代码来查询数据。在

因此,我的问题是:下面的代码片段是正确的查询RhythyBox数据库,还是需要安装一个附加的包来启用查询。在

步骤:

  1. 启用python控制台插件
  2. 键入(或逐行复制粘贴以下内容)

from gi.repository import RB, GLib

db = shell.props.db
query_model = RB.RhythmDBQueryModel.new_empty(db)
query = GLib.PtrArray()

db.query_append_params( query, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.ARTIST, 'some artist name' )
db.query_append_params( query, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.TITLE, 'some song name' )   

db.do_full_query_parsed(query_model, query)

for row in query_model:
    print row[0].get_string( RB.RhythmDBPropType.ARTIST )
    print row[0].get_string( RB.RhythmDBPropType.TITLE )

如果我输入这行代码时ubuntu12.04,ubuntu会因为一个分段错误而崩溃

^{pr2}$

因此,我是否正确地使用了调用中的第一个参数查询指针数组(PtrArray),或者我的查询函数参数是否不正确?在


Tags: 代码插件数据库dbmodelubuntu错误query
2条回答

答案是

好吧,这个问题确实是个问题-但回答我自己的问题

在Rhythbox中查询数据的语法如问题中所述。在

但是还有一个。。。

查询64位数据仅适用于linux。在

是的,真的-我已经测试了32位现场cd的Fedora17以及LMDE。两者都表现出与ubuntu12.04相同的分段错误问题。在

共同的原因是我在测试ubuntu12.04/fedora17和LMDE的32位版本。在

在它们的64位变体中测试这三个变量的工作与预期一样。在

32位的问题是一个bug——已经在bugzilla上报道过了——但是这个问题已经得到了回答。在

谢谢。在

我也碰到过这个。我通过手动迭代库来解决这个问题:

    for row in self.shell.props.library_source.props.base_query_model:
        entry = row[0]
        artist = entry.get_string(RB.RhythmDBPropType.ARTIST)
        if self.sanitize(artist) in similar_artists_map:
            self.qm.add_entry(entry, -1)

相关问题 更多 >

    热门问题