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

How to scan only a particular directory in Kodi via JSON-RPC?

我想知道如何指示 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:// 前缀方法在不同的变体中尝试过几次,但它要么根本不起作用,要么只会扫描整个音乐库,这需要相当长的时间。

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

我只想为子孙后代画上句号。


我的问题

当我将新音乐添加到我的网络驱动器并使用 beets 对其进行整理时,我还希望它显示在我的 Kodi 媒体中心中。现在,通过 Kodi 的 JSON-RPC API 发出 AudioLibrary.Scan 将重新扫描我的整个音乐库,其中包含大量专辑,可能会占用一些时间。我需要的是告诉 Kodi 只扫描特定专辑或单曲的方法 - 毕竟我知道那张专辑的路径,因为我刚刚组织了它。


解决方案

实际上这很容易,因为我已经快完成一半了。我所要做的就是向 JSON-RPC 调用添加一个名为 params 的附加对象,并在其中传递目录字符串。在这个例子中,我的音乐驻留在 HDD1/Media/Music/AlbumsBPI1 我的 Samba 网络上。因此,在我的媒体中心 .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