Как мне запросить данные в Rhythmbox

Я использую Ubuntu 12.04 и пытаюсь написать плагин Python для запроса к базе данных Rhythmbox. Версия Rhythmbox v2.96, но эта проблема также возникает с v2.97. Когда я делаю запрос Python, Ubuntu падает с ошибкой сегментации.

Я должен подтвердить, что следующее правильно, и если я нашел ошибку, специфичную для Ubuntu, или если я неправильно понял, как правильно запрашивать. Если кто-то другой, пользующийся другим дистрибутивом, может это подтвердить - это будет приветствоваться

Я подал отчет об ошибке на bugzilla относительно ошибки сегментации. Тем не менее, мой вопрос не строго об этом - он специально пытается подтвердить правильный код Python для запроса данных.

Таким образом, мой вопрос: является ли приведенный ниже фрагмент кода правильным для запроса к базе данных Rhythmbox или мне нужно установить дополнительный пакет для включения запросов.

шаги:

  1. Включить плагин консоли Python
  2. введите (или скопируйте и вставьте построчно следующее)
из gi.repository import РБ, Глиб

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

db.query_append_params(запрос, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.ARTIST, "имя какого-то исполнителя")
db.query_append_params (запрос, RB.RhythmDBQueryType.EQUALS, RB.RhythmDBPropType.TITLE, "название некоторой песни")   

db.do_full_query_parsed(query_model, query)

для строки в query_model:
    строка печати [0].get_string( RB.RhythmDBPropType.ARTIST)
    строка печати [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 ответа

Решение

и ответ...

Ну, эта проблема действительно является ошибкой - но, чтобы ответить на мой собственный вопрос,

да, синтаксис для запроса данных в Rhythmbox так же правильно указан в вопросе.

и есть однако...

Запрос данных работает только для 64-битной Linux.

Да, действительно - я тестировал 32-битные live-cd Fedora 17, а также LMDE. Оба демонстрируют ту же проблему с ошибками сегментации, что и Ubuntu 12.04.

Общим фактором является то, что я тестировал Ubuntu 12.04/Fedora 17 и LMDE в их 32-битных воплощениях.

Тестирование всех трех в их 64-битных вариантах работает как ожидалось.

32-битная проблема - это ошибка - о ней сообщалось на 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)
Другие вопросы по тегам