如何在Rhythmbox中查询数据

时间:2012-08-26 19:33:20

标签: python gio rhythmbox

我正在使用ubuntu 12.04而我正在尝试编写一个python插件来查询Rhythmbox数据库。 Rhythmbox版本是v2.96,但这个问题也发生在v2.97上。当我进行python查询时,Ubuntu崩溃并出现分段错误。

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

关于分段错误,我已经在bugzilla上提交了bug report。但是,我的问题并不严格 - 它专门试图确认正确的python代码来查询数据。

因此我的问题是:下面的代码片段是否正确查询Rhythmbox数据库,或者我是否需要安装其他软件包才能启用查询。

步骤:

  1. 启用python控制台插件
  2. 类型(或逐行复制并粘贴)
  3. 
    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 )
    
    

    如果ubuntu 12.04当我输入此行时,Ubuntu崩溃并出现分段错误

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

    因此,我实际上是否正确使用了调用中的第一个参数 - 查询指针数组(PtrArray) - 还是我的查询函数参数不正确?

2 个答案:

答案 0 :(得分:3)

,答案是......

嗯,这个问题确实是一个错误 - 但要回答我自己的问题,

在Rhythmbox中查询数据的语法在问题中正确陈述。

然而有一个......

查询数据仅适用于64位Linux。

是的 - 我一直在测试Fedora 17和LMDE的32位live-cd。两者都表现出与Ubuntu 12.04相同的分段故障问题。

常见的因素是我在32位版本中测试了Ubuntu 12.04 / Fedora 17和LMDE。

测试64位变体中的所有三种变体按预期工作。

32位问题是一个错误 - 并且已经在bugzilla上报告了 - 但是提出的问题已得到解答。

感谢。

答案 1 :(得分:1)

我也碰到了这个。我设法通过手动迭代库来解决它:

    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)
相关问题