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.
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 –