2017-03-07 232 views
0

我正在学习为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功能中的新ListItems未显示。另外,没有错误。请帮忙。

回答

0

添加一些日志记录,有趣的部分将是,如果你真的打了。因此请添加一些xbmc.log('hit')甚至记录您的值。

如果你想要一个完全成熟的日志检查这个例子https://github.com/xbmc/generator-kodi-addon/blob/master/generators/app/templates/resources/lib/kodilogging.py

+0

我添加记录语句几乎每一步,都记录语句被执行,包括为后。我还尝试将检索到的搜索结果(即result [“name”])打印到日志中,并将结果打印在日志中,但结果不显示为ListItems –