微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Kodi 插件:如何使用 xbmcplugin.addDirectoryItems 和 xbmcgui.ListItem 正确设置 URL?

我正在尝试为 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 设置为项目本身)

不过话说回来,添加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_addonhttps://kodi.wiki/view/Audio-video_add-on_tutorialhttps://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 举报,一经查实,本站将立刻删除。