Как сканировать только определенный каталог в Kodi через JSON-RPC?

Я хотел бы знать, как я могу указать Kodi искать новый (музыкальный) контент только внутри определенного каталога через JSON-RPC. Мой Kodi (точнее, OSMC) установлен на Raspberry Pi 2, и моя музыка размещена в другой системе через Samba (другая машина с Linux; Banana Pi). Время от времени я получаю новую музыку и сначала помечаю весь альбом тегами beets на Banana Pi. Затем, после того как музыка была помещена в папку назначения, я выполняю вызов JSON-RPC на свой компьютер Kodi с помощью этой команды:

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:// в разных вариантах, но он либо вообще не работал, либо просто сканировал всю музыкальную библиотеку, что занимало довольно много времени.

Любые советы о том, как добиться того, чего я хочу, и возможно ли это с той степенью детализации, которую я ожидаю, очень ценятся!


person Arno-Nymous    schedule 16.10.2017    source источник
comment
Вы должны иметь возможность получить список источников из Files.GetSources фильтрации с помощью Files.Media:music. Затем вызовите AudioLibrary.Scan для каждого List.Item.Sources элемента.   -  person Stavr00    schedule 17.10.2017


Ответы (1)


Я просто хочу довести это до конца для потомков.


Моя проблема

Когда я добавляю новую музыку на свой сетевой диск и упорядочиваю ее с помощью beets, я также хочу, чтобы она отображалась в моем Kodi. медиа центр. Теперь, выполнив AudioLibrary.Scan через API JSON-RPC Kodi, я повторно просканирую всю мою музыкальную библиотеку, состоящую из множества альбомов, и может занять некоторое время. Мне нужен был способ сказать Kodi просто отсканировать этот конкретный альбом или сингл — в конце концов, я знаю путь к этому альбому, так как я только что организовал его.


Решение

На самом деле это было довольно легко, так как я был почти на полпути. Все, что мне нужно было сделать, это добавить дополнительный объект с именем params к вызову JSON-RPC и передать в нем строку каталога. В этом примере моя музыка находится на HDD1/Media/Music/Albums на хосте BPI1 на моем сеть Samba. Таким образом, путь к моей музыке, настроенный в .kodi/sources.xml моего медиацентра, выглядит так:

smb://BPI1/HDD1/Media/Music/Albums

Это путь, который вы хотите использовать в качестве аргумента directory для вашего вызова RPC и добавить к нему имя альбома, чтобы 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 добавит только эту песню в вашу библиотеку. Как это:

smb://BPI1/HDD1/Media/Music/Albums/Lenny.Kravitz-It.is.Time.for.a.Love.Revolution/01-Love.Revolution.mp3
person Arno-Nymous    schedule 26.06.2018