Přeskočit na hlavní obsah
Version: 14.x

Externí API

Externí API umožňuje programům přístup k funkcím UMS pomocí volání HTTP protokolu.

Jak povolit externí API​

Upravte UMS.conf a nakonfigurujte api_key podobně jako toto

api_key = secret_password

secret_password musí mít minimálně 12 znaků.

Využití API​

Pokud je externí API povoleno, API je dostupné s POST voláním na /api/COMMAND

Skenování složky​

Znovu prohledat​

ÚmyslRescanuje kompletní knihovnu
URI/api/folderscanner/rescan
POST BODYNONE
Příklad / popis POST BODYTento příkaz nepotřebuje žádný obsah
Dostupné od10.4.2
info

Toto může být pomalé pro velké knihovny :

Příklad:

curl -w "%{http_code}\n" -H "api-key: secret_password" http://localhost:5001/api/folderscanner/rescan

znovu naskenovat soubor nebo složku​

ÚmyslRescanuje částečnou větev souborového systému.
URI/api/folderscanner/rescanFileOrder
POST BODYPATH_TO_SCAN
Příklad / popis POST BODYpříklad: "/music/pop/Madonna". Cesta musí být kořenový adresář nebo podsložka sdílené cesty.
Dostupné od10.4.2

Příklad:

curl -d "PATH_TO_SCAN" -w "%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/folderscanner/rescanFileOrFolder

Líbí se hudba (alba a skladby)​

líbí se song​

Skladba bude označena jako „oblíbená“.

ÚmyslOblíbená píseň identifikovaná musicBrainz trackId
URI<span class="s1">/api/like/likesong</span>
POST BODYmusicBrainz_trackID
Příklad / popis POST BODYb8695995-45e9-405d-b4aa-e50e8760fe25
Dostupné od10.20

Příklad:

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

nelíbí se píseň​

Skladba se nebude nelíbit

ÚmyslNelíbí se vám skladba identifikovaná musicBrainz trackId
URI<span class="s1">/api/like/</span>dislikesong
POST BODYmusicBrainz_trackID
Příklad / popis POST BODYb8695995-45e9-405d-b4aa-e50e8760fe25
Dostupné od10.20

Příklad:

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

skladba se líbí​

Zkontrolujte, zda se skladba líbí.

ÚmyslZkontrolujte, zda je skladba líbí, identifikována podle musicBrainz trackId
URI<span class="s1">/api/like/</span><span class="s1">issongliked</span>
POST BODYmusicBrainz_trackID
Příklad / popis POST BODYb8695995-45e9-405d-b4aa-e50e8760fe25
RESPONSE BODYTRUE or FALSE
Dostupné od10.20

Příklad:

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

Toto volání přidává oblíbený atribut alba identifikovaný podle musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af.

Album se mi líbí​

Nastaví album se líbí jako true.

ÚmyslLíbí se vám album identifikované podle musicBrainz releaseID
URI<span class="s1">/api/like/</span>likealbum
POST BODYmusicBrainz_releaseID
Příklad / popis POST BODY1e0eee38-a9f6-49bf-84d0-45d0647799af
Dostupné od10.20

Příklad:

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

albume se vám nelíbí​

Odstranit album se líbí status.

ÚmyslNemám rád skladbu identifikovanou musicBrainz releaseID
URI<span class="s1">/api/like/</span>dislikealbum
POST BODYmusicBrainz_releaseID
Příklad / popis POST BODY1e0eee38-a9f6-49bf-84d0-45d0647799af
Dostupné od10.20

Příklad:

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

Tento příkaz odstraní atribut alba "je oblíbené" identifikované musicbrainz release-id 1e0ee38-a9f6-49bf-84d0-45d0647799af.

album se líbí​

Zkontrolujte oblíbenost alba.

ÚmyslZkontrolujte, zda se album líbí pomocí musicBrainz releaseID
URI<span class="s1">/api/like/</span>isalbumliked
POST BODYmusicBrainz_releaseID
Příklad / popis POST BODY1e0eee38-a9f6-49bf-84d0-45d0647799af
RESPONSE BODY"TRUE" nebo "FALSE"
Dostupné od10.20

Příklad:

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

Tento příkaz kontroluje, zda se líbí album identifikované v musicbrainz release-id 1e0ee38-a9f6-49bf-84d0-45d0647799af.

Hodnocení​

API hodnocení je zodpovědné za hodnocení skladeb. Hodnotící informace jsou uloženy v interní databázi (povolena mezipaměť) a volitelně v samotném souboru. Pokud je audio_update_rating_tag = true nastaveno v UMS.conf pole pro hodnocení IDv3 je také aktualizováno v souboru skladby (pokud je podporován formát souboru).

Při procházení adresáře obsahu, MusicBrainzTrackID (je-li k dispozici) a audiotrackID jsou dodány jako desc metadata v rámci DIDL elementu.

nastavit hodnocení​

ÚmyslNastavte hodnocení v hvězdách (0 - 5) pro skladbu identifikovanou musicBrainz trackId
URI<span class="s1">/api/</span><span class="s1">rating/setrating</span>
POST BODYmusicbrainzTrackId /stars
Příklad / popis POST BODYb8695995-45e9-405d-b4aa-e50e8760fe25/3
Dostupné od10.20

Příklad:

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

Tento příkaz nastavuje uživatelské hodnocení všech skladeb identifikovaných podle musicbrainz track-id b8695995-45e9-405d-b4aa-e50e8760fe25 na 3.

získej hodnocení​

Čte hodnocení skladeb z databáze

ÚmyslZískejte hodnocení skladeb v hvězdách (0 - 5) od musicBrainz trackID. Odpověď obsahuje ratingové informace.
URI<span class="s1">/api/</span><span class="s1">rating/getrating </span>
POST BODYmusicbrainzTrackId
Příklad / popis POST BODYb8695995-45e9-405d-b4aa-e50e8760fe25
Příklad RESPONSE BODY3
Dostupné od10.20

Příklad:

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

Toto volání čte uživatelské hodnocení písně označené musicbrainz track-id b8695995-45e9-405d-b4aa-e50e8760fe25.

nastavit hodnocení podle audiotrack id​

ÚmyslNastaví hodnocení v hvězdičkách (0–5) skladby identifikované interním audiotrackID.
URI<span class="s1">/api/</span><span class="s1">rating/setRatingByAudiotrackId </span>
POST BODYtrackID /stars
Příklad / popis POST BODY32
Dostupné od11.0

Příklad:

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

Toto volání nastavuje uživatelské hodnocení skladeb identifikovaných audiotrack id32 na 3.

získej hodnocení pomocí audiotrack id​

Čte hodnocení skladeb z databáze

ÚmyslZískejte hodnocení skladeb ve hvězdách (0 - 5) od UMS interních audiotrackID. Odpověď obsahuje ratingové informace.
URI<span class="s1">/api/</span><span class="s1">rating/getRatingByAudiotrackId</span>
POST BODYtrackId
Příklad / popis POST BODY32
Příklad RESPONSE BODY3
Dostupné od11.0

Příklad:

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

Toto volání čte uživatelské hodnocení skladby identifikované pomocí UMS audiotrack-id 32.

Zálohování / Obnovení​

Uživatelem spravované "like album" položky mohou být zálohovány do adresáře s názvem database_backup. Název souboru je MUSIC_BRAINZ_RELEASE_LIKE. Pokud bude databáze UMS smazána, stačí volat obnovu.

zálohování oblíbených alb​

Zálohovat tabulku MUSIC_BRAINZ_RELEASE_LIKE do souborového systému

Úmyslzálohování oblíbených skladeb do souborového systému
URI<span class="s1"><span class="s1">/api/like/</span></span>backupLikedAlbums
REQUEST TYPEGET
RESPONSE BODYOK nebo chybová zpráva
Dostupné od10.20

Příklad:

curl -w "%{http_code}\n" -H "api-key: secret_password" -X GET http://localhost:5001/api/like/backupLikedAlbums

Tento volání vytvoří záložní soubor obsahující oblíbená alba.

obnovit oblíbené alba​

Obnoví tabulku MUSIC_BRAINZ_RELEASE_LIKE ze souborového systému

Úmyslobnovit oblíbené skladby ze záložního souboru
URI<span class="s1"><span class="s1"><span class="s1">/api/like/</span></span></span>restoreLikedAlbums
REQUEST TYPEGET
RESPONSE BODYOK nebo chybová zpráva
Dostupné od10.20

Příklad:

curl -w "%{http_code}\n" -H "api-key: secret_password" -X GET http://localhost:5001/api/like/restoreLikedAlbums

Tento volání obnoví záložní soubor.

Seznam stop​

Povolit službu​

Upravte UMS.conf a nakonfigurujte spravovanou složku playlistu 

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

pro povolení této služby. Ve výchozím nastavení je tato služba zakázána. Cesta ke složce playlistu by měla být umístěna pod nakonfigurovanou sdílenou <span class="s1">složkou</span> pro změnu playlistu, kterou toto API vidí UMS.

seznam všech playlistů​

Číst dostupné seznamy skladeb. Tyto názvy playlistu musí být použity pro následná volání pro přidání nebo odebrání skladeb.

ÚmyslDodává všechny podporované (m3u, m3u8 a pls) a dostupné seznamy skladeb z nakonfigurované složky. Kromě názvu playlistu je playlist playlistId
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">getAllPlaylists</span>
REQUEST TYPEGET
RESPONSE BODYJSON pole jmen playlistu
Příklad RESPONSE BODY<span class="s1">["Pop","Jazz","Classic"]</span>
Dostupné od11.0

Příklad:

curl -d "" -w "\n%{http_code}\n" -H "api-key: secret_password" -X GET http://localhost:5001/api/playlist/getAllPlaylists

Tento požadavek bude zobrazovat všechny dostupné seznamy skladeb.

seznam playlistů na serveru​

Všechny tyto playlisty jsou známy UMS (databáze/mezipaměti). Tyto názvy playlistu musí být použity pro následné dotazy pro přidání nebo odebrání skladeb. ID playlistu může být použito k přímé navigaci do playlistu prohlížením objectId $DBID$PLAYLIST$ concat databaseId.

ÚmyslDodá všechny podporované (m3u, m3u8 a pls) a dostupné seznamy skladeb z nakonfigurované složky
URI<span class="s1">`/api/</span><span class="s1">playlist</span><span class="s1">/</span>getserverplaylists` ``
REQUEST TYPEGET
RESPONSE BODYJSON array of playlist names
Příklad RESPONSE BODY[{"playlistName":"Jazz","playlistId":5},{"playlistName":"Charts","playlistId":343}]
Dostupné odvývojová větev

Příklad:

curl -d "" -w "\n%{http_code}\n" -H "api-key: secret_password" -X GET http://localhost:5001/api/playlist/getserverplaylists

Toto volání bude zobrazovat seznam všech dostupných playlistů, které jsou dostupné pomocí UMS.

přidávání skladeb do playlistů​

Požadovaný audiotrackid je doručen během prohlížení požadavků UPnP a lze jej extrahovat z DIDL atributu odezvy descMetadata

<ums-tags>
[...]
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
ÚmyslPřidat skladbu do seznamu skladeb
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">addSongToPlaylist</span>
REQUEST TYPEPOST
POST BODYaudiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
Příklad / popis POST BODY123/Pop
RESPONSE BODYNONE
Dostupné od11.0

Příklad:

curl -d "123/Pop" -w "\n%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/playlist/addSongToPlaylist

Toto přidá píseň s ID 123 do playlistu Pop.

odstranění skladeb ze seznamů skladeb​

Požadovaný audiotrackid je doručen během prohlížení požadavků UPnP a lze jej extrahovat z DIDL atributu odezvy descMetadata

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

``

ÚmyslOdstranit skladbu ze seznamu skladeb
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">removeSongFromPlaylist</span>
REQUEST TYPEPOST
POST BODYaudiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
Příklad / popis POST BODY123/Pop
RESPONSE BODYNONE
Dostupné od11.0

Příklad:

curl -d "123/Pop" -w "\n%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/playlist/removeSongFromPlaylist

Tímto odstraníte skladbu s ID 123 z playlistu Pop.

vytvořit nové seznamy skladeb​

Název playlistu by měl být uveden bez cesty a bez přípony souborů. 

ÚmyslVytváření nových seznamů skladeb ve spravované složce seznamu skladeb
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">createPlaylist</span>
REQUEST TYPEPOST
POST BODY<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">PLAYLIST_NAME</span>
Příklad / popis POST BODYSoučasný
RESPONSE BODYNONE
Dostupné od11.0

Příklad:

curl -d "Contemporary" -w "\n%{http_code}\n" -H "api-key: secret_password" -X POST http://localhost:5001/api/playlist/createPlaylist

Toto volání vytvoří nový soubor playlistu s názvem Contemporary.m3u8 ve spravované složce playlistu.

Příklad kódu Java​

Tento úryvek kódu ukazuje, jak používat API v knihovně 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();
}

HTTP návratové kódy​

| 200 | OK | | 204 | Úspěch, pokud nemá být žádný obsah vrácen | | 401 | neplatný api klíč | | 404 | Požadovaný objekt nebyl nalezen | | 417 | API požadavek selhal | | 503 | externí api není povoleno. Nastavte api_key v UMS.conf o délce 12 nebo více znaků |