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

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ů |