Zum Hauptinhalt springen
Version: 13.x

Externe API

Die externe API macht es möglich, auf UMS Funktionen mit einem HTTP-Aufruf zu Zugreifen.

Wie die externe API aktiviert wird​

Bearbeite die UMS.conf und erstelle einen api_key wie hier

api_key = geheimes_Passwort

Das Geheime_Passwort muss mindestens 12 Zeichen haben.

API-Nutzung​

Wenn die externe API aktiviert ist, ist sie mit einem POST-Aufruf von /api/BEFEHL erreichbar

Das Scannen von Ordnern​

Neu durchsuchen​

AbsichtLiest die komplette Bibliothek neu ein.
URI/URL/api/folderscanner/rescan
POST BODYKEINE
POST BODY Beispiel/BeschreibungDieses Kommando erfordert keinen body Inhalt
Verfügbar seit10.4.2
info

Kann bei einer großen Bibliothek länger dauern

Beispiel:

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

rescanFileOrFolder​

ZielLiest einen Teilpfad des Dateisystems neu ein
URI/URL /api/folderscanner/rescanFileOrFolder
POST BODYPATH_TO_SCAN
POST BODY Beispiel/BeschreibungBeispiel/Beschreibung Beispiel: "/music/pop/Madonna" Der Pfad muss das Wurzelverzeichnis oder ein Unterordner eines freigegebenen Pfades sein.
Verfügbar seit Version:10.4.2

Beispiel

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

Musik gut finden​

ein Lied gut finden​

Das Lied wird als gemocht markiert

AbsichtKennzeichne ein Lied, dass Du magst, das durch eine musicBrainz Kennnummer identifiziert wird
URI/URL<span class="s1">/api/like/likesong</span>
POST BODYmusicBrainz_trackID
POST BODY Beispiel/Beschreibungb8695995-45e9-405d-b4aa-e50e8760fe25
Verfügbar seit Version:10.20

Beispiel:

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

Lied nicht mögen​

Das Lied wird nicht als unerwünscht gekennzeichnet

AbsichtKennzeichne ein Lied, dass Du NICHT magst, das durch eine musicBrainz Kennnummer identifiziert wird
URI/URL<span class="s1">/api/like/</span>dislikesong
POST BODYmusicBrainz_trackID
POST BODY Beispiel/Beschreibungb8695995-45e9-405d-b4aa-e50e8760fe25
Verfügbar seit Version:10.20

Beispiel:

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

Magst Du das Lied​

Prüfe, ob Du das Lied magst

AbsichtPrüfe, ob das Lied als ein Lied gekennzeichnet ist, dass Du magst, das durch eine musicBrainz Kennnummer identifiziert wird
URI/URL<span class="s1">/api/like/</span><span class="s1">issongliked</span>
POST BODYmusicBrainz_trackID
POST BODY Beispiel/Beschreibungb8695995-45e9-405d-b4aa-e50e8760fe25
RESPONSE BODYTRUE oder FALSE
Verfügbar seit Version:10.20

Besipiel

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

Dieser Aufruf fügt das liked Attribut des Albums, welches durch eine musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af identifiziert wird.

Album "Gefällt mir"​

Setze Album auf "gefällt mir"

AbsichtKennzeichnet ein Album, das durch eine musicBrainz Kennnummer identifiziert wird, als ein Albu, das Du magst
URI/URL<span class="s1">/api/like/</span>likealbum
POST BODYmusicBrainz_releaseID
POST BODY Beispiel/Beschreibung1e0eee38-a9f6-49bf-84d0-45d0647799af
Verfügbar seit Version:10.20

Beispiel

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

Album gefällt mir nicht​

Den "mögen" Status des Albums löschen

AbsichtKennzeichne ein Lied, dass Du NICHT magst, das durch eine musicBrainz Kennnummer identifiziert wird
URI/URL<span class="s1">/api/like/</span>dislikealbum
POST BODYmusicBrainz_releaseID
POST BODY Beispiel/Beschreibung1e0eee38-a9f6-49bf-84d0-45d0647799af
Verfügbar seit Version:10.20

Beispiel:

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

Dieser Aufruf hat das liked Attribut des Albums entfernt, welches durch eine musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af identifiziert wird.

gefällt Dir das Album​

Prüfe den like Status des Albums

AbsichtPrüfe, ob das Album, das durch eine musicBrainz Kennnummer identifiziert wird als ein Album gekennzeichnet ist, dass Du magst
URI/URL<span class="s1">/api/like/</span>isalbumliked
POST BODYmusicBrainz_releaseID
POST BODY Beispiel/Beschreibung1e0eee38-a9f6-49bf-84d0-45d0647799af
RESPONSE BODYTRUE" oder "FALSE"
Verfügbar seit Version:10.20

Beispiel:

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

Dieser Aufruf prüft, ob für das Album, das mit der musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af identifiziert ist, das like Attribut gesetzt ist.

Bewertung​

Das Bewertungs-API sorgt für die Bewertung von Liedern. Bewertungsinformation wird in der internen Datenbank gespeichert (Zwischenspeicher aktiviert) und optional in der Datei selbst. Wenn audio_update_rating_tag = true in UMS.conf gesetzt ist, wird das IDv3-Bewertungsfeld auch in der Song-Datei aktualisiert (wenn das Song-Dateiformat unterstützt wird).

Beim Durchsuchen des Content-Verzeichnis-Servers werden MusicBrainzTrackID (falls verfügbar) und audiotrackID als desc Metadaten innerhalb des DIDL-Elements ausgegeben.

setze Bewertung​

AbsichtSetze Bewertung in Sternen (0 - 5) für ein Lied, das von musicBrainz trackId identifiziert wurde
URI/URL<span class="s1">/api/</span><span class="s1">rating/setrating</span>
POST BODYmusicbrainzTrackId /stars
POST BODY Beispiel/Beschreibungb8695995-45e9-405d-b4aa-e50e8760fe25/3
Verfügbar seit Version:10.20

Beispiel:

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

Dieser Aufruf legt die Benutzerbewertung aller Lieder fest, die mit der Musikbrainz-Track-ID b8695995-45e9-405d-b4aa-e50e8760fe25identifiziert wurden, auf 3.

lies die Bewertung​

Liedbewertung aus Datenbank lesen

AbsichtDie Liedbewertung in Sternen (0-5) nach musicBrainz trackID auslesen. Der Inhalt der Antwort enthält die Bewertungsinformationen.
URI/URL<span class="s1">/api/</span><span class="s1">rating/getrating </span>
POST BODYmusicbrainzTrackId
POST BODY Beispiel / Beschreibungb8695995-45e9-405d-b4aa-e50e8760fe25
RESPONSE BODY [ Inhalt] Beispiel3
Verfügbar seit Version:10.20

Beispiel:

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

Dieser Aufruf liest die Benutzer-Bewertung eines Liedes, das von der musicbrainz Track-ID b8695995-45e9-405d-b4aa-e50e8760fe25 identifiziert wurde.

Setze Bewertung nach audiotrack id​

AbsichtSetze Bewertung in Sternen (0 - 5) für ein Lied, das durch eine UMS interne AudiotrackID identifiziert wurde
URI/URL<span class="s1">/api/</span><span class="s1">rating/setRatingByAudiotrackId </span>
POST BODYtrackID /stars
POST BODY Beispiel / Beschreibung32
Verfügbar seit Version:11.0

Beispiel:

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

Dieser Aufruf legt die Benutzerbewertung eines Liedes fest, das mit der Audiospur-ID32 bis 3 identifiziert wurde.

erhalte Bewertung nach Audiospur id​

Liedbewertung aus Datenbank lesen

AbsichtLies die Bewertung des Lieds in Sternen (0 - 5) gemäß UMS interner AudiotrackID. Der Inhalt der Antwort enthält die Bewertungsinformation.
URI/URL<span class="s1">/api/</span><span class="s1">rating/getRatingByAudiotrackId</span>
POST BODY [Sende den Inhalt der Anfrage]trackId
POST BODY Beispiel / Beschreibung32
RESPONSE BODY Beispiel3
Verfügbar seit Version:11.0

Beispiel:

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

Dieser Aufruf liest die Benutzerbewertung eines Liedes, das durch die UMS Audiotrack-ID 32 identifiziert wurde.

Backup / Wiederherstellung​

Benutzerverwaltete "liked album"-Einträge können in einem Profilverzeichnis mit dem Namen database_backup gesichert werden. Der Dateiname ist MUSIC_BRAINZ_RELEASE_LIKE. Falls die UMS Datenbank gelöscht wird, rufen Sie einfach die Wiederherstellung auf.

favorisierte Alben sichern​

Tabelle MUSIC_BRAINZ_RELEASE_LIKE im Dateisystem sichern

AbsichtSichere favorisierte Lieder im Dateisystem
URI/URL<span class="s1"><span class="s1">/api/like/</span></span>backupLikedAlbums
REQUEST TYPE [Typ der Anfrage]GET
RESPONSE BODYOK oder Fehlermeldung
Verfügbar seit Version:10.20

Beispiel:

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

Dieser Aufruf erzeugt eine Sicherungsdatei mit favorisierten Alben erstellen.

Favorisierte Alben wiederherstellen.​

Stellt die Tabelle MUSIC_BRAINZ_RELEASE_LIKE aus dem Dateisystem wieder her.

Absichtfavorisierte Lieder aus Backup-Datei wiederherstellen
URI/URL<span class="s1"><span class="s1"><span class="s1">/api/like/</span></span></span>restoreLikedAlbums
REQUEST TYPE [Typ der Anfrage]GET
RESPONSE BODYOK oder Fehlermeldung
Verfügbar seit Version:10.20

Beispiel:

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

Dieser Aufruf stellt die Sicherungsdatei wieder her.

Wiedergabeliste​

Dienst aktivieren​

Bearbeiten Sie UMS.conf und konfigurieren Sie einen verwalteten Wiedergabelistenordner in den Einstellungen 

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

um den Dienst zu aktivieren. Standardmäßig ist dieser Dienst deaktiviert. Der Pfad zum Wiedergabelistenordner sollte unter einem konfigurierten gemeinsamen <span class="s1">Ordner</span> Pfad für die durch diese API geänderte Wiedergabeliste für UMS sichtbar gemacht werden.

alle Playlisten auflisten​

Verfügbare Wiedergabelisten lesen. Diese Playlist-Namen müssen für nachfolgende Anrufe verwendet werden, um Lieder hinzuzufügen oder zu entfernen.

AbsichtLiefert alle unterstützten (m3u, m3u8 und pls) und verfügbaren Wiedergabelisten aus dem konfiguriertem Ordner. Neben dem Playlist-Namen ist die Playlist PlaylistId
URI/URL<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">getAllPlaylists</span>
REQUEST TYPE [Typ der Anfrage]GET
RESPONSE BODYJSON-Array der Playlist-Namen
RESPONSE BODY Beispiel<span class="s1">["Pop","Jazz","Classic"]</span>
Verfügbar seit Version:11.0

Beispiel:

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

Dieser Anruf listet alle verfügbaren Wiedergabelisten auf.

zugängliche Wiedergabelisten des Servers auflisten​

Dies sind alle UMS bekannten Wiedergabelisten (Datenbank/Cache aktiviert). Diese Playlist-Namen müssen für nachfolgende Anrufe verwendet werden, um Lieder hinzuzufügen oder zu entfernen. Die Playlist-ID kann benutzt werden, um direkt zur Wiedergabeliste zu navigieren, indem Sie die objectId $DBID$PLAYLIST$ verkettet mit der databaseId durchsuchen.

AbsichtLiefert alle unterstützten (m3u, m3u8 und pls) und verfügbaren Wiedergabelisten aus dem konfigurierten Ordner
URI/URL<span class="s1">`/api/</span><span class="s1">playlist</span><span class="s1">/</span>getserverplaylists` ``
REQUEST TYPE [Typ der Anfrage]GET
RESPONSE BODYJSON-Array der Playlist-Namen
RESPONSE BODY [ Inhalt] Beispiel[{"playlistName":"Jazz","playlistId":5},{"playlistName":"Charts","playlistId":343}]
Verfügbar seit Version:Entwicklungszweig

Beispiel:

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

Dieser Anruf listet alle verfügbaren Wiedergabelisten auf, die für UMS zugänglich sind.

Lieder zur Wiedergabeliste hinzufügen​

Die benötigte audiotrackid wird während UPnP Browse Requests ausgeliefert und kann aus dem DIDL Response-Attribut descMetadata extrahiert werden

<ums-tags>
[...]
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
<ums-tags>
[...]
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
<audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
</ums-tags>
AbsichtTitel zur Playlist hinzufügen
URI/URL<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">addSongToPlaylist</span>
REQUEST TYPE [Typ der Anfrage]POST
POST BODY [Sende den Inhalt der Anfrage]audiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
POST BODY Beispiel / Beschreibung123/Pop
RESPONSE BODYKEINE
Verfügbar seit Version:11.0

Beispiel:

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

Dies fügt den Song mit der ID 123 zur Playlist Pop hinzu.

Titel von Wiedergabeliste entfernen​

Die benötigte audiotrackid wird während UPnP Browse Requests ausgeliefert und kann aus dem DIDL Response-Attribut descMetadata extrahiert werden

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

``

AbsichtTitel von Wiedergabeliste entfernen
URI/URL<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">removeSongFromPlaylist</span>
REQUEST TYPE [Typ der Anfrage]POST
POST BODY [Sende den Inhalt der Anfrage]audiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
POST BODY Beispiel / Beschreibung123/Pop
RESPONSE BODYKEINE
Verfügbar seit Version:11.0

Beispiel:

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

Dies entfernt den Song mit der ID 123 aus der Playlist Pop.

neue Wiedergabelisten erstellen​

Der Name der Wiedergabeliste sollte ohne Pfad und ohne Dateiendungen angegeben werden. 

AbsichtNeue Wiedergabelisten im verwalteten Wiedergabelistenordner erstellen
URI/URL<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">createPlaylist</span>
REQUEST TYPE [Typ der Anfrage]POST
POST BODY [Sende den Inhalt der Anfrage]<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">PLAYLIST_NAME</span>
POST BODY Beispiel / BeschreibungZeitgenössisch
RESPONSE BODYKEINE
Verfügbar seit Version:11.0

Beispiel:

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

Dieser Aufruf erzeugt eine neue Wiedergabeliste mit dem Namen Contemporary.m3u8 im verwalteten Wiedergabelistenordner.

Java-Code-Beispiel​

Dieser Code-Ausschnitt zeigt, wie man die API mit der okhttp3-Bibliothek benutzt.

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();
}

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 Statuscodes​

| 200 | OK | | 204 | Erfolg, wenn kein Inhalt zurückgegeben werden soll | | 401 | ungültiger api key | | 404 | angefordertes Objekt kann nicht gefunden werden | | 417 | API Anfrage fehlgeschlagen | | 503 | Externe api ist nicht aktiviert. Lege eine api_key in UMS.conf mit einer Länge von 12 oder mehr Zeichen fest |