[英]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.