我想知道如何指示Kodi通过JSON-RPC在特定目录中搜索新的(音乐)内容。 我在Raspberry Pi 2上安装了我的Kodi(更具体地说是OSMC),我的音乐通过Samba(另一台Linux机器; Banana Pi)托管在另一个系统上。偶尔我会收到新的音乐并首先使用Banana Pi上的beets标记整张专辑。然后,在将音乐放入其目标文件夹后,我使用以下命令对我的Kodi机器执行JSON-RPC调用:
curl --data-binary "{\"jsonrpc\": \"2.0\", \"method\": \"AudioLibrary.Scan\", \"id\": 1}" -H "content-type: application/json;" http://$KODIHOST/jsonrpc
现在我知道我可以将参数directory
传递给AudioLibrary.Scan命令,但我不太清楚它的正确语法。当我只想要扫描一个特定的专辑文件夹时,正确的语法是什么样的?我应该将音乐所在的物理路径传递给音乐主机(如smb://{HOST}/HDD1/Media/Music/Albums/{Album_Name}
),还是使用我在Kodi库中的虚拟目录名称(如Albums
,Compilations
等)?
我已经尝试了几次smb://前缀方法在不同的变体中,但它要么根本不起作用,要么只扫描整个音乐库需要相当长的时间。
有关如何实现我想要的任何建议以及是否可能达到我期望的粒度,我们非常感谢!
答案 0 :(得分:1)
我只想结束后世。
当我将新音乐添加到网络驱动器并使用beets对其进行整理时,我也希望将其显示在我的Kodi媒体中心中。现在,发行一个AudioLibrary.Scan,对Kodi的JSON-RPC API进行扫描将重新扫描我的整个音乐库,该音乐库包含成千上万张专辑,并且可能要花一些时间。我需要的是一种让Kodi扫描特定专辑或单张专辑的方法-毕竟,因为我刚刚整理了这张专辑,所以我知道该专辑的路径。
实际上,这很容易,因为我快到一半了。我要做的就是向JSON-RPC调用中添加一个名为params
的附加对象,并在其中传递目录字符串。在此示例中,我的音乐驻留在Samba网络上主机 BPI1 上的 HDD1 / Media / Music / Albums 上。因此,在媒体中心的.kodi/sources.xml
中配置的音乐的路径如下所示:
smb://BPI1/HDD1/Media/Music/Albums
这就是您要用作RPC调用的directory
参数并在其中添加唱片集名称的路径,这样Kodi仅扫描该特定目录,而不会扫描其他任何目录。通过cURL传递请求的示例示例如下:
{
"json_rpc": "2.0",
"method': "audiolibrary.scan",
"id": 1,
"params": {
"directory": "smb://BPI1/HDD1/Media/Music/Albums/Lenny.Kravitz-It.is.Time.for.a.Love.Revolution"
}
}
这将使Kodi扫描Lenny Kravitz的专辑,并剩下所有剩余的东西。
编辑:
如果您听很多单曲,只需将文件名附加到目录字符串中,Kodi只会将这首歌添加到您的音乐库中。像这样:
smb://BPI1/HDD1/Media/Music/Albums/Lenny.Kravitz-It.is.Time.for.a.Love.Revolution/01-Love.Revolution.mp3