Перейти к основному содержимому
Версия: 13.x

Внешний API

Внешний API позволяет программам получать доступ к функциям UMS или запускать их с помощью HTTP-вызова.

Как включить внешний API

Отредактируйте UMS.conf и настройте api_key следующим образом

api_key = секретный_пароль

секретный_пароль должен содержать не менее 12 символов.

Использование API

Если внешний API включён, API доступен с помощью POST-вызова в /api/COMMAND

Сканирование папок

повторное сканирование

НамерениеПересканирование всей библиотеки
URI/api/сканер папок/повторное сканирование
Содержание сообщенияНикто
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеЭта команда не нуждается в содержании сообщения
Доступно с10.4.2

Может быть медленно для больших библиотек :::

Пример:

curl -w "%{http_code}\n" -H "api-ключ: секретный_пароль" http://localhost:5001/api/сканируемые папки/повторное сканирование

Пересканировать файл или папку

НамерениеЧастичное пересканирование дерева файловой системы.
URI/api/сканируемые папки/повторно сканировать файл или папку
Содержание сообщенияПУТЬ_ К_СКАНИРОВАНИЮ
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниепример: "/music/pop/Madonna". Путь должен быть к корневой папке или к вложенной папке общего доступа.
Доступно с10.4.2

Пример:

curl -d "ПУТЬ_ К_СКАНИРОВАНИЮ" -w "%{http_code}\n" -H "api-key: секретный_пароль" -X СООБЩЕНИЕ http://localhost:5001/api/сканируемые папки/Повторно просканировать файл или папку

Нравится музыка (альбомы и песни)

нравится песня

Песня будет отмечена как понравившаяся.

НамерениеНравится песня, идентифицированная с помощью MusicBrainz TrackID
URI<span class="s1">/api/нравится/lпонравившаяся песня</span>
Содержание сообщенияmusicBrainz_trackID
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеb8695995-45e9-405d-b4aa-e50e8760fe25
Доступно с10.20

Пример:

curl -d "b8695995-45e9-405d-b4aa-e50e8760fe25" -w "%{http_code}\n" -H "api-ключ: секретный_пароль" -X СООБЩЕНИЕ http://localhost:5001/api/нравится/понравившаяся песня

не нравится песня

Песня не нравится

НамерениеНе нравится песня, идентифицированная MusicBrainz TrackID
URI<span class="s1">/api/нравится/</span>песня не нравится
Содержание сообщенияmusicBrainz_trackID
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеb8695995-45e9-405d-b4aa-e50e8760fe25
Доступно с10.20

Пример:

curl -d "b8695995-45e9-405d-b4aa-e50e8760fe25" -w "%{http_code}\n" -H "api-ключ: секретный_пароль" -X POST http://localhost:5001/api/нравится/песня не нравится

песня понравилась

Отметьте, если песня нравится.

НамерениеОтметьте, если понравилась песня, идентифицированная с помощью MusicBrainz TrackID
URI<span class="s1">/api/нравится/</span><span class="s1">песня мне нравится </span>
Содержание сообщенияmusicBrainz_trackID
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеb8695995-45e9-405d-b4aa-e50e8760fe25
СОДЕРЖАНИЕ ОТВЕТАИСТИНА или ЛОЖЬ
Доступно с10.20

Пример:

curl -d "b8695995-45e9-405d-b4aa-e50e8760fe25" -w "%{http_code}\n" -H "api-ключ: секретный_пароль" -X СООБЩЕНИЕ http://localhost:5001/api/нравится/понравившаяся песня

Этот вызов добавляет связанный атрибут понравившегося альбома, идентифицированный musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af.

нравится альбом

Установите для состояния album like значение true.

НамерениеПонравившийся альбом, идентифицированный MusicBrainz ReleaseID
URI<span class="s1">/api/нравится/</span>понравившийся альбом
Содержание сообщенияmusicBrainz_releaseID
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описание1e0eee38-a9f6-49bf-84d0-45d0647799af
Доступно с10.20

Пример:

curl -d "b8695995-45e9-405d-b4aa-e50e8760fe25" -w "%{http_code}\n" -H "api-ключ: секретный_пароль" -X СООБЩЕНИЕ http://localhost:5001/api/нравится/понравившаяся песня

не нравится альбом

Удалить статус альбома, как понравившегося .

НамерениеНе нравится песня, идентифицированная MusicBrainz ReleaseID
URI<span class="s1">/api/нравится/</span>альбом не нравится
Содержание сообщенияmusicBrainz_releaseID
Пример / описание текста сообщения1e0eee38-a9f6-49bf-84d0-45d0647799af
Доступно с10.20

Пример:

curl -d "1e0eee38-a9f6-49bf-84d0-45d0647799af" -w "%{http_code}\n" -H "api-key: секретный_пароль" -X POST http://localhost:5001/api/нравится/альбом не нравится

Этот вызов удалил связанный атрибут альбома, идентифицированный musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af.

нравится альбом

Проверьте статус понравившегося альбома

ЗамыселПроверьте, понравился ли альбом, указанный в MusicBrainz ReleaseID
URI<span class="s1">/api/нравится/</span>понравившийся альбом
Содержание сообщенияmusicBrainz_releaseID
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описание1e0eee38-a9f6-49bf-84d0-45d0647799af
СОДЕРЖАНИЕ ОТВЕТА"ИСТИНА" или "ЛОЖЬ"
Доступно с10.20

Пример:

curl -d "1e0eee38-a9f6-49bf-84d0-45d0647799af" -w "%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/like/isalbumliked

Этот вызов проверяет, идентифицирован ли альбом с помощью musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af нравится.

Рейтинг

Rating API отвечает за рейтинг песен. Информация о рейтинге сохраняется во внутренней базе данных (кэш включен) и, при необходимости, в самом файле. Если в UMS.conf задано значение audio_update_rating_tag = true, поле оценки IDv3 также обновляется в файле песни (если поддерживается формат файла песни).

При просмотре сервера каталогов содержимого MusicBrainzTrackID (если доступно) и audiotrackID передаются как метаданные desc в элементе DIDL.

установить рейтинг

ЗамыселУстановите рейтинг в звездах (0 - 5) для песни, идентифицированной с помощью MusicBrainz TrackID
URI<span class="s1">/api/</span><span class="s1">rating/setrating</span>
Содержание сообщенияmusicbrainzTrackId /stars
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеb8695995-45e9-405d-b4aa-e50e8760fe25/3
Доступно с10.20

Пример:

curl -d "b8695995-45e9-405d-b4aa-e50e8760fe25/3" -w "%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/rating/setrating

Этот вызов устанавливает рейтинг пользователей всех песен, идентифицированных musicbrainz track-id b8695995-45e9-405d-b4aa-e50e8760fe25 до 3.

установить рейтинг

Считывает рейтинг песни из базы данных

НамерениеПолучите рейтинг песни в звездах (0 - 5) с помощью внутреннего audiotrackID UMS. Текст ответа содержит информацию о рейтинге.
URI<span class="s1">/api/</span><span class="s1">rating/getrating </span>
Содержание сообщенияmusicbrainzTrackId
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеb8695995-45e9-405d-b4aa-e50e8760fe25
Пример ОТВЕТА3
Доступно с10.20

Пример:

curl -d "b8695995-45e9-405d-b4aa-e50e8760fe25" -w "%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/rating/getrating

Этот вызов считывает пользовательский рейтинг песни, идентифицированной по идентификатору трека musicbrainz b8695995-45e9-405d-b4aa-e50e8760fe25.

установите рейтинг по идентификатору audiotrack id

НамерениеУстановите оценку в звездах (0 - 5) для песни, идентифицированной с помощью внутреннего audiotrackID UMS
URI<span class="s1">/api/</span><span class="s1">rating/setRatingByAudiotrackId </span>
Содержание сообщенияtrackID /stars
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описание32
Доступно с11.0

Пример:

curl -d "32/3" -w "%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/rating/setrating

Этот вызов устанавливает пользовательский рейтинг песен, определенный по audiotrackid 32, на 3.

получить рейтинг по ID аудиотрека

Считывает рейтинг песни из базы данных

ЗамыселПолучите рейтинг песни в звездах (0 - 5) по MusicBrainz TrackID. Текст ответа содержит информацию о рейтинге.
URI<span class="s1">/api/</span><span class="s1">rating/getRatingByAudiotrackId</span>
Содержание сообщенияидентификатор трека
Пример / описание текста сообщения32
Пример ОТВЕТА3
Доступно с11.0

Пример:

curl -d "32" -w "%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/rating/getRatingByAudiotrackId

Этот вызов считывает пользовательский рейтинг песни, идентифицированной UMS audiotrack-id 32.

Резервное копирование / восстановление

Управляемые пользователем записи "понравившегося альбома" могут быть скопированы в подпапку каталога профиля с именем database_backup. Имя файла MUSIC_BRAINZ_RELEASE_LIKE. В случае, если база данных UMS будет удалена, просто вызовите функцию восстановления.

резервное копирование любимых альбомов

Таблица резервного копирования MUSIC_BRAINZ_RELEASE_LIKE в файловую систему

Замыселрезервное копирование понравившихся песен в файловую систему
URI<span class="s1"><span class="s1">/api/like/</span></span>backupLikedAlbums
ТИП ЗАПРОСАПОЛУЧИТЬ
СОДЕРЖАНИЕ ОТВЕТАOK или сообщение об ошибке
Доступно с10.20

Пример:

curl -w "%{http_code}\n" -H "api-ключ: секретный_пароль" http://localhost:5001/api/понравившиеся/дублированные альбомы

Этот вызов создаст резервную копию файла, содержащего понравившиеся альбомы

восстановить понравившиеся альбомы

Восстановление таблицы MUSIC_BRAINZ_RELEASE_LIKE из файловой системы

Замыселвосстановить понравившиеся песни из файла резервной копии
URI<span class="s1"><span class="s1"><span class="s1">/api/like/</span></span></span>restoreLikedAlbums
ТИП ЗАПРОСАПОЛУЧИТЬ
СОДЕРЖАНИЕ ОТВЕТАOK или сообщение об ошибке
Доступно с10.20

Пример:

curl -w "%{http_code}\n" -H "api-ключ: секретный_пароль" http://localhost:5001/api/понравившиеся/дублированные альбомы

Этот вызов восстанавливает файл резервной копии.

Плейлист

Включить службу

Отредактируйте UMS.conf и настройте папку управляемого списка воспроизведения, установив 

<span class="s1">managed_playlist_folder</span> = PATH_TO_PLAYLIST_FOLDER

для включения этой службы. По умолчанию эта служба отключена. Путь к папке плейлиста должен быть расположен под настроенным общим <span class="s1">каталогом</span> для изменения плейлиста, созданным этим API, который будет виден UMS.

список всех плейлистов

Читать доступные плейлисты Читать доступные плейлисты Читать доступные плейлисты Читать доступные плейлисты Эти имена плейлистов должны использоваться для последующих звонков для добавления или удаления песен.

ЗамыселДоставляет все поддерживаемые (m3u, m3u8 и pls) и доступные плейлисты из настроенной папки. Кроме имени плейлиста плейлист
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">getAllPlaylists</span>
ТИП ЗАПРОСАПОЛУЧИТЬ
СОДЕРЖАНИЕ ОТВЕТАJSON массив имён плейлистов
Пример ОТВЕТА<span class="s1">["Поп","Джаз","Классика"]</span>
Доступно с11.0

Пример:

curl -d "" -w "\n%{http_code}\n" -H "api-key: секретный_пароль" -X GET http://localhost:5001/api/список воспроизведения/получить все списки воспроизведения

В этом вызове будут перечислены все доступные списки воспроизведения.

список доступных на сервере плейлистов

Все эти плейлисты известны UMS (базы данных/кэш включен). Эти имена плейлистов должны использоваться при последующих вызовах для добавления или удаления песен. ID плейлиста может быть использован для перехода непосредственно к плейлисту, просматривая объект $DBID$PLAYLIST$ базы данных.

ЗамыселПредоставляет все поддерживаемые (m3u, m3u8 и pls) и доступные плейлисты из настроенной папки
URI<span class="s1">`/api/</span><span class="s1">playlist</span><span class="s1">/</span>getserverplaylists` ``
ТИП ЗАПРОСАПОЛУЧИТЬ
СОДЕРЖАНИЕ ОТВЕТАМассив имен плейлистов в формате JSON
Пример ОТВЕТА[{"Имя списка воспроизведения":"Джаз","идентификатор плейлиста":5},{"Имя списка воспроизведения":"Списки","идентификатор плейлиста":343}]
Доступно светвь разработки

Пример:

curl -d "" -w "\n%{http_code}\n" -H "api-key: секретный_пароль" -X GET http://localhost:5001/api/список воспроизведения/получение списков воспроизведения сервера

Этот вызов выведет список всех имеющихся плейлистов, доступных UMS.

добавление треков в плейлисты

Требуемый audiotrackid предоставляется во время запросов браузера UPnP и может быть извлечен из атрибута ответа DIDL descMetadata

<ums-tags>
[...]
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
ЗамыселДобавить песню в плейлист
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">addSongToPlaylist</span>
ТИП ЗАПРОСАСООБЩЕНИЕ
Содержание сообщенияaudiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описание123/Поп
СОДЕРЖАНИЕ ОТВЕТАОТСУТСТВУЕТ
Доступно с11.0

Пример:

curl -d "123/Pop" -w "\n%{http_code}\n" -H "api-key: секретный_пароль" -X POST http://localhost:5001/api/список воспроизведения/добавить песню в список воспроизведения

Это добавляет песню с ID 123 в плейлист Pop.

Удалить песни из плейлиста

Требуемый audiotrackid предоставляется во время запросов браузера UPnP и может быть извлечен из атрибута ответа DIDL descMetadata

<ums-tags>
[...]
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>

``

ЗамыселУдалить песню из плейлиста
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">removeSongFromPlaylist</span>
ТИП ЗАПРОСАСООБЩЕНИЕ
Содержание сообщенияaudiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
Пример / описание текста сообщения123/Поп
СОДЕРЖАНИЕ ОТВЕТАОТСУТСТВУЕТ
Доступно с11.0

Пример:

curl -d "123/Pop" -w "\n%{http_code}\n" -H "api-key: секретный_пароль" -X POST http://localhost:5001/api/список воспроизведения/удалить песню из списка воспроизведения

Это удаляет песню с ID 123 из плейлиста Pop.

создать новые плейлисты

Имя плейлиста должно быть предоставлено без пути и без расширения файлов. 

ЗамыселСоздание новых плейлистов в управляемой папке плейлиста
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">createPlaylist</span>
ТИП ЗАПРОСАСООБЩЕНИЕ
Содержание сообщения<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">Название списка воспроизведения</span>
Пример СОДЕРЖАНИЯ СООБЩЕНИЯ/описаниеСовременный
СОДЕРЖАНИЕ ОТВЕТАОТСУТСТВУЕТ
Доступно с11.0

Пример:

curl -d "Современный" -w "\n%{http_code}\n" -H "api-key: секретный_пароль" -X POST http://localhost:5001/api/список воспроизведения/создать список воспроизведения

Этот вызов создает новый файл списка воспроизведения с именем Contemporary.m3u8 в папке управляемого списка воспроизведения.

Пример кода Java

Этот фрагмент кода показывает, как использовать API с библиотекой okhttp3.

import nextcp.dto.Config;
import nextcp.dto.UmsServerApiKey;
import okhttp3.Call;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

[...]

public String executeCall() throws IOException
{
String postBody = "1e0eee38-a9f6-49bf-84d0-45d0647799af";
String apiKey = "secret_password";
RequestBody body = RequestBody.create(postBody, MediaType.parse("application/text"));
String requestUrl = "http://127.0.0.1:5001/api/like/likealbum";
Request request = new Request.Builder().url(requestUrl).addHeader("api-key", apiKey).post(body).build();
Call call = okClient.newCall(request);
Response response = call.execute();
return response.body().string();
}

public String executeCall() throws IOException
{
String postBody = "1e0eee38-a9f6-49bf-84d0-45d0647799af";
String apiKey = "secret_password";
RequestBody body = RequestBody.create(postBody, MediaType.parse("application/text"));
String requestUrl = "http://127.0.0.1:5001/api/like/likealbum";
Request request = new Request.Builder().url(requestUrl).addHeader("api-key", apiKey).post(body).build();
Call call = okClient.newCall(request);
Response response = call.execute();
return response.body().string();
}

HTTP коды возврата

| 200 | OK | | 204 | успех, если предполагается, что содержимое не будет возвращено | | 401 | недопустимый ключ api | | 404 | запрошенный объект не найден | | 417 | сбой запроса API | | 503 | внешний api не включен. Установите api_key в UMS.conf с длиной 12 или более символов |