如何将本地文件添加到kodi插件? 在以下示例中,Internet文件(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)
答案 0 :(得分:1)
这应该是文件系统中没有任何前缀的绝对路径,例如'/foo/bar/spam.mp4'
(* nix)或'c:\\foo\\bar\\spam.mp4'
(Win)。我认为,网络文件系统也可以工作,对于它们你需要像smb://
或nfs://`这样的前缀,但不需要本地文件。
答案 1 :(得分:1)
在搜索了一段时间后,我找到了Kodi的special://
协议:http://kodi.wiki/view/Special_protocol,我在这里引用:
“特殊协议”是Kodi对平台依赖的解决方案 目录。公共目录名称分配了一个特殊的:// [名称] 在科迪内部传递然后翻译成的路径 操作系统看到之前的平台特定路径。这有帮助 将大部分平台混乱集中在代码中。
使用以下代码的special://
协议将执行此操作:
xbmcplugin.addDirectoryItem(handle=addon_handle,
url='special://home/bn/local_file.mp3',
listitem=xbmcgui.ListItem('local_file'))