我正在编写一个Rhythmbox插件,用于迭代Rhythmbox目前已知的所有播客文件(无论是否已下载)并对其进行操作。
在Rhythmbox的Python Shell中进行了一些研究和测试后,我成功获得了所有对象的列表。但是,当我将其编码为插件时,我收到错误:
(rhythmbox:7500): GLib-GObject-WARNING **: invalid cast from `RhythmDBTree' to `RhythmDBEntryType'
且entries
列表为空:
def run(self, action, shell):
db = shell.get_property('db')
entry_type = db.entry_type_get_by_name('podcast-post')
print entry_type
entries = []
db.entry_foreach_by_type(entry_type, entries.append)
print entries
但是,print entry_type
返回:<rhythmdb.EntryType object at 0xa7ea34c (RhythmDBEntryType at 0xa106988)>
,因此db对象显然有效。
我做错了什么?
答案 0 :(得分:1)
首先尝试重新安装rhythmbox。
查看输出结果,它在我的机器上正常运行,在机器上发布此输出
from __future__ import print_function
def plugin_create(database):
print(database)
db.entry_foreach_by_type(db.entry_type_get_by_name('podcast-post'), print)
答案 1 :(得分:0)
我尝试了以下内容:
def run(self, action, shell):
db = shell.get_property('db')
entry_type = db.entry_type_get_by_name('podcast-post')
print entry_type
entries = []
db.entry_foreach(entries.append)
print entries
for entry in entries:
if entry.get_type() == entry_type:
# process entry...
它正常工作。嗯,不是最美丽的解决方案,但它可以满足我的需求。