2017-03-07 12 views
0

Kodi 용 애드온을 개발하고 검색 기능을 구현해야합니다. 키보드에서 사용자 입력을 얻고 결과를 가져 오기 위해 검색어와 함께 API를 호출하기 위해 일부 리소스를 온라인에서 찾았습니다. API가 잘 요청되었지만 결과가 ListItems을 통해 표시되지 않습니다. 내가 Search을 선택하고 해제 할 키보드를 검색 할 수있는 내 단어를 입력하지만 아무 일도 일어나지 않을 때 다음은 내 코드키보드에서 검색 용어를 입력 한 후에 결과가 표시되지 않습니다.

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

입니다. 동일한 메뉴가 표시되고 perform_search 함수의 새 ListItem이 표시되지 않습니다. 또한 오류가 없습니다. 도와주세요.

답변

0

일부 로깅을 추가하면 재미있는 부분은 실제로를 누르십시오. 따라서 xbmc.log('hit')을 추가하거나 값을 기록하십시오.

당신이

+0

https://github.com/xbmc/generator-kodi-addon/blob/master/generators/app/templates/resources/lib/kodilogging.py 내가 거의 모든 단계와 모든 로그 문이 위해를 포함하여 실행 한 후 로그인 문을 추가이 예에게 만발한 로깅 체크를합니다. 또한 검색된 검색 결과, 즉 결과 [ "name"]'를 로그에 인쇄하려고 시도했지만 결과가 로그에 인쇄되지만 결과는 ListItems로 표시되지 않습니다. –