2017-03-07 53 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 –