如何解决Kodi 插件:如何使用 xbmcplugin.addDirectoryItems 和 xbmcgui.ListItem 正确设置 URL?
我正在尝试为 kodi 19(和 python3)更新一个插件。 但!地狱!他们的文档一团糟,当你在互联网上搜索时,很多代码已经过时了。 我无法理解如何正确地使用 xbmcplugin.addDirectoryItems 创建包含项目的虚拟文件夹。
这是我的(简化)代码:
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 设置为项目本身)
不过话说回来,添加item到列表中的时候好像还需要设置URL,
li = data_to_listitem(data)
list_items.append((url,True))
这看起来很奇怪,因为这意味着您必须知道构建项目的函数之外的 URL。 所以目前,我的解决方法是
li = data_to_listitem(data)
url = li.getPath() #I retrieve the URL defined in the above function
list_items.append((url,True))
该代码有效。但问题是:如果我可以使用 setPath()
在 ListItem 上定义一个 URL,那么在将 ListItem 附加到我的列表 list_items.append((url,True))
时为什么还要填写该 URL?
非常感谢!
解决方法
我不太确定你的问题是什么。但视频/音频插件开发在以下指南中进行了详尽的解释:https://kodi.wiki/view/HOW-TO:Audio_addon、https://kodi.wiki/view/Audio-video_add-on_tutorial 和 https://kodi.wiki/view/HOW-TO:Video_addon。看看它们,尤其是视频附加指南(如 Roman 所指出的),并尝试适应您的情况。
编辑
但问题是:如果我可以使用 setPath() 在 ListItem 上定义一个 URL,那么在附加 ListItem 到我的列表?
我远非专家,但根据我的理解和 https://kodi.wiki/view/HOW-TO:Video_addon 教程的上下文,
中的网址 list_items.append((url,li,is_folder))
用于将您的插件路由到您的播放功能,并将参数传递给它(例如视频网址和播放所需的其他可能有用的东西)。也就是说,这里传递的列表项不需要设置其路径。
ListItem.setPath(video_url)
另一方面,用于解析视频网址并在您选择一个项目后开始播放。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。