如何通过JSON-RPC仅扫描Kodi中的特定目录?

时间:2017-10-16 08:17:49

标签: raspberry-pi json-rpc kodi

我想知道如何指示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库中的虚拟目录名称(如AlbumsCompilations等)?

我已经尝试了几次smb://前缀方法在不同的变体中,但它要么根本不起作用,要么只扫描整个音乐库需要相当长的时间。

有关如何实现我想要的任何建议以及是否可能达到我期望的粒度,我们非常感谢!

1 个答案:

答案 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