我正在学习为Kodi开发一个插件,需要实现一个搜索功能。我在网上找到了一些资源,可以从键盘获取用户输入,然后用搜索词调用一个API来获取结果。API请求很好,但是结果没有通过ListItems
显示。下面是我的代码
_url = sys.argv[0]
_handle = int(sys.argv[1])
def get_url(**kwargs):
return '{0}?{1}'.format(_url, urlencode(kwargs))
def display_main_menu():
list_item = xbmcgui.ListItem(label="Search")
url = get_url(action='search')
xbmcplugin.addDirectoryItem(_handle, url, list_item)
def perform_search(search_term):
link = "api_url_here" + search_term
r = requests.get(link)
resp = json.loads(r.text)
for result in resp:
list_item = xbmcgui.ListItem(label=result["name"])
list_item.setArt({'thumb': result["img"], 'icon' : result["img"], 'fanart' : result["img"]})
url = '' #blank url for testing
is_folder = True
xbmcplugin.addDirectoryItem(_handle, url, list_item, is_folder)
xbmcplugin.endOfDirectory(_handle)
def search():
keyb = xbmc.Keyboard('',"Search for Videos", False)
keyb.setDefault('')
keyb.doModal()
if (keyb.isConfirmed() and len(keyb.getText()) > 0):
perform_search(keyb.getText())
def router(paramstring):
params = dict(parse_qsl(paramstring))
if params:
if params['action'] == 'search':
search()
else:
raise ValueError('Invalid paramstring: {0}!'.format(paramstring))
else:
display_main_menu()
if __name__ == '__main__':
router(sys.argv[2][1:])
当我选择Search
然后键入我的单词进行搜索时,键盘被取消,但什么也没有发生。正在显示相同的菜单,perform_search
函数中的新列表项将不显示。而且,没有错误。请帮忙。你知道吗
添加一些日志,有趣的部分将是如果你真的点击了for。所以添加一些
xbmc.log('hit')
或者甚至记录你的值。你知道吗如果您想要完整的日志记录,请检查这个示例https://github.com/xbmc/generator-kodi-addon/blob/master/generators/app/templates/resources/lib/kodilogging.py
相关问题 更多 >
编程相关推荐