【发布时间】:2021-08-02 15:51:58
【问题描述】:
我正在尝试更新 Kodi 19(和 Python3)的插件。 但!地狱!他们的文档一团糟,当你在互联网上搜索时,很多代码已经过时了。 我无法理解如何正确使用 xbmcplugin.addDirectoryItems 创建包含项目的虚拟文件夹。
这是我的(简化的)代码:
这是我的 KODI 菜单功能
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
我不太了解如何与媒体网址进行交互。 似乎可以在 xbmcgui.ListItem 中使用
list_item.setPath(url)
这对我来说似乎没问题(一个 url 设置为项目本身)
不过,好像还需要在将项目添加到列表时设置URL,
li = data_to_listitem(data)
list_items.append((url, li, True))
这看起来很奇怪,因为这意味着您必须知道构建项目的函数之外的 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?
非常感谢!
【问题讨论】:
标签: python-3.x add-on xbmc kodi