2017-03-07 3 views
0

Ich lerne ein Addon für Kodi zu entwickeln und muss eine Suchfunktion implementieren. Ich habe online einige Ressourcen gefunden, um Benutzereingaben von der Tastatur zu erhalten und dann eine API mit dem Suchbegriff aufzurufen, um Ergebnisse abzurufen. Die API wird angefordert, aber die Ergebnisse werden nicht durch ListItems angezeigt. Unten ist mein CodeErgebnisse nicht nach Suchbegriff aus der Tastatur eingegeben

_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:]) 

Wenn ich Search und geben Sie dann mein Wort wählen geschieht über die Tastatur suchen wird zurückgewiesen, aber nichts. Das gleiche Menü wird angezeigt und neue ListItems aus der perform_search Funktion werden nicht angezeigt. Außerdem gibt es keinen Fehler. Bitte helfen Sie.

Antwort

0

Fügen Sie einige Protokollierung, der interessante Teil wird sein, wenn Sie tatsächlich treffen für die. Fügen Sie also einige xbmc.log('hit') hinzu oder protokollieren Sie Ihre Werte.

Wenn Sie eine vollständige geblasen Protokollierung Check diesem Beispiel wollen https://github.com/xbmc/generator-kodi-addon/blob/master/generators/app/templates/resources/lib/kodilogging.py

+0

ich Anmeldung Aussagen hinzugefügt, nachdem fast jedem Schritt und alle Log-Anweisungen wurden einschließlich der für ausgeführt. Ich habe auch versucht, die abgerufenen Suchergebnisse, d. H. 'Result [" name "]', in das Protokoll zu drucken, und die Ergebnisse werden im Protokoll gedruckt, aber die Ergebnisse werden nicht als ListItems angezeigt –

Verwandte Themen