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
Úmysl | Rescanuje kompletní knihovnu |
---|---|
URI | /api/folderscanner/rescan |
POST BODY | NONE |
Příklad / popis POST BODY | Tento příkaz nepotřebuje žádný obsah |
Dostupné od | 10.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
Úmysl | Rescanuje částečnou větev souborového systému. |
---|---|
URI | /api/folderscanner/rescanFileOrder |
POST BODY | PATH_TO_SCAN |
Příklad / popis POST BODY | příklad: "/music/pop/Madonna". Cesta musí být kořenový adresář nebo podsložka sdílené cesty. |
Dostupné od | 10.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á“.
Úmysl | Oblíbená píseň identifikovaná musicBrainz trackId |
---|---|
URI | <span class="s1">/api/like/likesong</span> |
POST BODY | musicBrainz_trackID |
Příklad / popis POST BODY | b8695995-45e9-405d-b4aa-e50e8760fe25 |
Dostupné od | 10.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
Úmysl | Nelíbí se vám skladba identifikovaná musicBrainz trackId |
---|---|
URI | <span class="s1">/api/like/</span>dislikesong |
POST BODY | musicBrainz_trackID |
Příklad / popis POST BODY | b8695995-45e9-405d-b4aa-e50e8760fe25 |
Dostupné od | 10.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í.
Úmysl | Zkontrolujte, zda je skladba líbí, identifikována podle musicBrainz trackId |
---|---|
URI | <span class="s1">/api/like/</span><span class="s1">issongliked</span> |
POST BODY | musicBrainz_trackID |
Příklad / popis POST BODY | b8695995-45e9-405d-b4aa-e50e8760fe25 |
RESPONSE BODY | TRUE or FALSE |
Dostupné od | 10.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.
Úmysl | Líbí se vám album identifikované podle musicBrainz releaseID |
---|---|
URI | <span class="s1">/api/like/</span>likealbum |
POST BODY | musicBrainz_releaseID |
Příklad / popis POST BODY | 1e0eee38-a9f6-49bf-84d0-45d0647799af |
Dostupné od | 10.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.
Úmysl | Nemám rád skladbu identifikovanou musicBrainz releaseID |
---|---|
URI | <span class="s1">/api/like/</span>dislikealbum |
POST BODY | musicBrainz_releaseID |
Příklad / popis POST BODY | 1e0eee38-a9f6-49bf-84d0-45d0647799af |
Dostupné od | 10.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.
Úmysl | Zkontrolujte, zda se album líbí pomocí musicBrainz releaseID |
---|---|
URI | <span class="s1">/api/like/</span>isalbumliked |
POST BODY | musicBrainz_releaseID |
Příklad / popis POST BODY | 1e0eee38-a9f6-49bf-84d0-45d0647799af |
RESPONSE BODY | "TRUE" nebo "FALSE" |
Dostupné od | 10.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í
Úmysl | Nastavte 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 BODY | musicbrainzTrackId /stars |
Příklad / popis POST BODY | b8695995-45e9-405d-b4aa-e50e8760fe25/3 |
Dostupné od | 10.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
Úmysl | Zí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 BODY | musicbrainzTrackId |
Příklad / popis POST BODY | b8695995-45e9-405d-b4aa-e50e8760fe25 |
Příklad RESPONSE BODY | 3 |
Dostupné od | 10.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
Úmysl | Nastaví 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 BODY | trackID /stars |
Příklad / popis POST BODY | 32 |
Dostupné od | 11.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
Úmysl | Zí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 BODY | trackId |
Příklad / popis POST BODY | 32 |
Příklad RESPONSE BODY | 3 |
Dostupné od | 11.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
Úmysl | zálohování oblíbených skladeb do souborového systému |
---|---|
URI | <span class="s1"><span class="s1">/api/like/</span></span>backupLikedAlbums |
REQUEST TYPE | GET |
RESPONSE BODY | OK nebo chybová zpráva |
Dostupné od | 10.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
Úmysl | obnovit 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 TYPE | GET |
RESPONSE BODY | OK nebo chybová zpráva |
Dostupné od | 10.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.
Úmysl | Dodá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 TYPE | GET |
RESPONSE BODY | JSON pole jmen playlistu |
Příklad RESPONSE BODY | <span class="s1">["Pop","Jazz","Classic"]</span> |
Dostupné od | 11.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.
Úmysl | Dodá 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 TYPE | GET |
RESPONSE BODY | JSON array of playlist names |
Příklad RESPONSE BODY | [{"playlistName":"Jazz","playlistId":5},{"playlistName":"Charts","playlistId":343}] |
Dostupné od | vý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>
Úmysl | Př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 TYPE | POST |
POST BODY | audiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span> |
Příklad / popis POST BODY | 123/Pop |
RESPONSE BODY | NONE |
Dostupné od | 11.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>
``
Úmysl | Odstranit 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 TYPE | POST |
POST BODY | audiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span> |
Příklad / popis POST BODY | 123/Pop |
RESPONSE BODY | NONE |
Dostupné od | 11.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ů.
Úmysl | Vytvář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 TYPE | POST |
POST BODY | <span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">PLAYLIST_NAME</span> |
Příklad / popis POST BODY | Současný |
RESPONSE BODY | NONE |
Dostupné od | 11.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ů |