簡體   English   中英

Kodi 插件:如何使用 xbmcplugin.addDirectoryItems 和 xbmcgui.ListItem 正確設置 URL?

[英]Kodi addons : how to correctly set an URL using xbmcplugin.addDirectoryItems and xbmcgui.ListItem?

我正在嘗試更新 Kodi 19(和 Python3)的插件。 但是,地獄,他們的文檔是一團糟。 當你搜索互聯網時,很多代碼已經過時了。 我無法理解如何正確使用xbmcplugin.addDirectoryItems創建包含項目的虛擬文件夾。

這是我的(簡化的)代碼:

這是我的 KODI 菜單 function

def menu_live():

  #this is were I get my datas (from internet)
  datas = api.get_live_videos()
  
  listing = datas_to_list(datas)

  sortable_by = (xbmcplugin.SORT_METHOD_DATE,
                 xbmcplugin.SORT_METHOD_DURATION)

  xbmcplugin.addDirectoryItems(common.plugin.handle, listing, len(listing))
  xbmcplugin.addSortMethod(common.plugin.handle, xbmcplugin.SORT_METHOD_LABEL)
  xbmcplugin.endOfDirectory(common.plugin.handle)

這將為虛擬文件夾構建項目列表

def datas_to_list(datas):
    list_items = []

    if datas and len(datas):
        for data in datas:
            li = data_to_listitem(data)
            url = li.getPath()
            list_items.append((url, li, True))

    return list_items

這會為我們的清單創建一個xbmcgui.ListItem

def data_to_listitem(data):

    #here I parse my data to build a xbmcgui.ListItem
    label = ...
    url = ...
    ...

    
    list_item = xbmcgui.ListItem(label)
    list_item.setPath(url)

    return list_item

我不太了解如何與媒體 url 進行交互。 似乎可以在 xbmcgui.ListItem 中使用

list_item.setPath(url)

這對我來說似乎沒問題(url 設置為項目本身)

但是,在將項目添加到列表時,您似乎還需要設置 URL,

li = data_to_listitem(data)
list_items.append((url, li, True))

這看起來很奇怪,因為這意味着您必須知道構建項目的 function 之外的 URL。 所以目前,我的解決方法是

li = data_to_listitem(data)
url = li.getPath() #I retrieve the URL defined in the above function
list_items.append((url, li, True))

該代碼有效。 但問題是:如果我可以使用setPath()在 ListItem 上定義 URL ,那么為什么在將 ListItem 附加到我的列表list_items.append((url, li, True))時還要填寫 URL ?

非常感謝 !

我不確定你的問題是什么。 But Video/audio add-on development is thoroughly explained in these guides: https://kodi.wiki/view/HOW-TO:Audio_addon , https://kodi.wiki/view/Audio-video_add-on_tutorial and https:/ /kodi.wiki/view/HOW-TO:Video_addon 看看它們,尤其是視頻附加指南(如 Roman 所指出的),並嘗試適應您的情況。

編輯

但問題是:如果我可以使用 setPath() 在 ListItem 上定義 URL,那么在將 ListItem 附加到我的列表時,為什么還要填寫 URL?

我遠非專家,但根據我的理解並在https://kodi.wiki/view/HOW-TO:Video_addon教程的背景下,url 在

  list_items.append((url, li, is_folder))

用於將您的插件路由到您的播放 function,以及將 arguments 傳遞給它(例如視頻 url 以及可能需要播放的其他有用的東西)。 也就是說,這里傳遞的列表項不需要設置其路徑。

  ListItem.setPath(video_url)

另一方面,用於解析視頻 url 並在您選擇項目后開始播放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM