0

如何将本地文件添加到 kodi 插件?在以下示例中,互联网文件 (url='http://...') 有效。但本地文件 (url='file://...') 没有。

import xbmc
import xbmcgui
import xbmcplugin
import xbmcaddon
import xbmcvfs
import sys
addon_handle = int(sys.argv[1])
xbmcplugin.setContent(addon_handle, 'songs')

#this works
xbmcplugin.addDirectoryItem(handle=addon_handle, url='http://www.noiseaddicts.com/samples_1w72b820/2537.mp3', listitem=xbmcgui.ListItem('internet_file'))

#this do not work
xbmcplugin.addDirectoryItem(handle=addon_handle, url='file://media/usb0/music/bn/local_file.mp3', listitem=xbmcgui.ListItem('local_file'))

xbmcplugin.endOfDirectory(addon_handle)
4

2 回答 2

1

这应该是文件系统中的绝对路径,不带任何前缀,例如'/foo/bar/spam.mp4'(*nix) 或'c:\\foo\\bar\\spam.mp4'(Win)。我认为,网络文件系统也可以工作,对于它们,您确实需要像smb://或 nfs://` 这样的前缀,但对于本地文件则不需要。

于 2016-09-29T13:41:33.900 回答
1

搜索了一段时间后,我找到了 Kodi 的special://协议: http: //kodi.wiki/view/Special_protocol,我在这里引用:

“特殊协议”是 Kodi 对平台相关目录的解决方案。公共目录名称被分配一个特殊的://[name] 路径,该路径在 Kodi 内部传递,然后在操作系统看到它之前转换为平台特定路径。这有助于将大部分平台混乱集中在代码中。

使用special://以下代码的协议将做到这一点:

xbmcplugin.addDirectoryItem(handle=addon_handle, 
                            url='special://home/bn/local_file.mp3',
                            listitem=xbmcgui.ListItem('local_file'))
于 2016-10-02T06:48:14.893 回答