Aller au contenu principal
Version: 14.x

API externe

L'API externe permet aux programmes tiers d'accéder ou de déclencher des fonctionnalités UMS avec un appel HTTP.

Comment activer l'API externe

Modifiez UMS.conf et configurez une api_key comme ceci

api_key = secret_password

Le secret_password doit avoir un minimum de 12 caractères.

Utilisation de l'API

Si l'API externe est activée, elle sera accessible via un appel POST sur /api/COMMAND

Analyse des dossiers

rescan

IntentionRé-analyse complète de la bibliothèque
URI/api/folderscanner/rescan
POST BODY
POST BODY example / descriptionCette commande ne requiert aucun contenu dans le corps de la requête
Disponible depuis10.4.2

Cela peut être lent pour les grandes bibliothèques

Exemple :

réanalyser le fichier ou le dossier

Ré-analyse partielle du système de fichiers
``
exemple: "/music/pop/Madonna". Le chemin doit être la racine ou un sous-dossier d'un chemin partagé.
Disponible depuis10.4.2

Exemple :

J'aime la musique (albums et chansons)

Aimer la chanson

La chanson sera marquée comme aimée.

IntentionComme une chanson identifiée par musicBrainz trackId
URI<span class="s1">/api/like/likesong</span>
POSTER LE CODEmusicBrainz_trackID
POSTER LE CODE exemple / descriptionb8695995-45e9-405d-b4aa-e50e8760fe25
Disponible depuis10.20

Exemple :

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

Je n'aime pas la chanson

La chanson sera appréciée

IntentionNe pas aimer une chanson identifiée par musicBrainz trackId
URI<span class="s1">/api/like/</span>dislikesong
POSTER LE CODEmusicBrainz_trackID
POSTER LE CODE exemple / descriptionb8695995-45e9-405d-b4aa-e50e8760fe25
Disponible depuis10.20

Exemple :

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

est une chanson aimée

Vérifier si la chanson est aimée.

IntentionVérifier si la chanson est aimée identifier par musicBrainz trackId
URI<span class="s1">/api/like/</span><span class="s1">issongliked</span>
POSTER LE CODEmusicBrainz_trackID
POSTER LE CODE exemple / descriptionb8695995-45e9-405d-b4aa-e50e8760fe25
CORPS DE RÉPONSEVrai ou Faux
Disponible depuis10.20

Exemple :

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

Cet appel ajoute l'attribut aimé de l'album identifié par musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af.

Aimez cet album

Définissez l’état de l’album sur Vrai.

IntentionAime un album identifié par musicBrainz releaseID
URI<span class="s1">/api/like/</span>likealbum
POSTER LE CODEmusicBrainz_releaseID
POSTER LE CODE exemple / description1e0eee38-a9f6-49bf-84d0-45d0647799af
Disponible depuis10.20

Exemple :

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

Je n'aime pas l'album

Supprimer l'état de l'album.

IntentionJe n'aime pas une chanson identifiée par musicBrainz releaseID
URI<span class="s1">/api/like/</span>dislikealbum
POSTER LE CODEmusicBrainz_releaseID
POSTER LE CODE exemple / description1e0eee38-a9f6-49bf-84d0-45d0647799af
Disponible depuis10.20

Exemple :

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

Cet appel a supprimé l'attribut aimé de l'album identifié par musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af.

est un album aimé

Vérifier l'état de l'album.

IntentionVérifier si l'album est aimé identifié par musicBrainz releaseID
URI<span class="s1">/api/like/</span>isalbumliked
POSTER LE CODEmusicBrainz_releaseID
POSTER LE CODE exemple / description1e0eee38-a9f6-49bf-84d0-45d0647799af
CORPS DE RÉPONSE"Vrai" ou "Faux"
Disponible depuis10.20

Exemple :

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

Cet appel vérifie si l'album identifié par musicbrainz release-id 1e0eee38-a9f6-49bf-84d0-45d0647799af est souhaité.

Note

L'API d'évaluation est responsable de l'évaluation des chansons. Les informations de notation sont enregistrées dans la base de données interne (cache activé) et éventuellement dans le fichier lui-même. Si audio_update_rating_tag = true est défini dans UMS.conf, le champ de notation IDv3 est également mis à jour dans le fichier de chanson (si le format de fichier de chansons est pris en charge).

définir l'évaluation

IntentionDéfinir la note en étoiles (0 - 5) sur une chanson identifiée par musicBrainz trackId
URI<span class="s1">/api/</span><span class="s1">rating/setrating</span>
POSTER LE CODEmusicbrainzTrackId /stars
POSTER LE CODE exemple / descriptionb8695995-45e9-405d-b4aa-e50e8760fe25/3
Disponible depuis10.20

Exemple :

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

Cet appel définit l'évaluation utilisateur de toutes les chansons identifiées par le track-id musicbrainz b8695995-45e9-405d-b4aa-e50e8760fe25 à 3.

définir l'évaluation

Lit l'évaluation de la chanson depuis la base de données

IntentionObtenez la note de la chanson en étoiles (0 - 5) par musicBrainz trackID. Le corps de la réponse contient les informations de classement.
URI<span class="s1">/api/</span><span class="s1">rating/getrating </span>
POSTER LE CODEmusicbrainzTrackId
POSTER LE CODE exemple / descriptionb8695995-45e9-405d-b4aa-e50e8760fe25
Exemple du corps de la réponse3
Disponible depuis10.20

Exemple :

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

Cet appel lit la note utilisateur d'une chanson identifiée par le track-id musicbrainz b8695995-45e9-405d-b4aa-e50e8760fe25.

définir l'évaluation par l'id de la piste audio

IntentionDéfinir la note en étoiles (0 - 5) sur une chanson identifiée par musicBrainz trackId
URI<span class="s1">/api/</span><span class="s1">rating/setRatingByAudiotrackId </span>
POSTER LE CODEtrackID /stars
POSTER LE CODE exemple / description32
Disponible depuis11.0

Exemple :

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

Cet appel définit l'évaluation des chansons identifiées par l'id de la piste audio32 à 3.

définir l'évaluation par l'id de la piste audio

Lit l'évaluation de la chanson depuis la base de données

IntentionObtenez la note de la chanson en étoiles (0 - 5) par musicBrainz trackID. Le corps de la réponse contient les informations de classement.
URI<span class="s1">/api/</span><span class="s1">rating/getRatingByAudiotrackId</span>
POSTER LE CODEtrackId
POSTER LE CODE exemple / description32
Exemple du corps de la réponse3
Disponible depuis11.0

Exemple :

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

Sauvegarde et restauration

Les entrées "album aimé" gérées par l'utilisateur peuvent être sauvegardées dans un sous-répertoire de profil nommé database_backup. Le nom du fichier est MUSIC_BRAINZ_RELEASE_LIKE. Dans le cas où la base de données UMS serait supprimée, il suffit de la restaurer.

sauvegarder les albums aimés

Sauvegarde de la table MUSIC_BRAINZ_RELEASE_LIKE vers le système de fichiers

Intentionsauvegarder les chansons favorites vers le système de fichiers
URI<span class="s1"><span class="s1">/api/like/</span></span>backupLikedAlbums
TYPE DE DEMANDEGET
CORPS DE RÉPONSEOK ou message d'erreur
Disponible depuis10.20

Exemple :

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

Cet appel va créer un fichier de sauvegarde contenant les albums aimés.

Restaurer les albums favoris

Sauvegarde de la table MUSIC_BRAINZ_RELEASE_LIKE vers le système de fichiers

Intentionrestaurer les chansons favorites à partir du fichier de sauvegarde
URI<span class="s1"><span class="s1"><span class="s1">/api/like/</span></span></span>restoreLikedAlbums
TYPE DE DEMANDEGET
CORPS DE RÉPONSEOK ou message d'erreur
Disponible depuis10.20

Exemple :

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

Cet appel restaure le fichier de sauvegarde.

Liste de lecture

Activez le service

Editer UMS.conf et configurer un dossier de playlist géré par paramètre 

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

pour activer ce service. Par défaut, ce service est désactivé. Le chemin du dossier de la liste de lecture doit être situé sous un dossier <span class="s1">configuré <span class="s1"> dossier</span> pour la liste de lecture modifiée par cette API pour être visible par UMS.

lister toutes les playlists

Lire les playlists disponibles. Ces noms de playlist doivent être utilisés pour les appels suivants pour ajouter ou supprimer des morceaux.

IntentionFournit toutes les listes de lecture prises en charge (m3u, m3u8 et pls) et disponibles à partir du dossier configuré. Outre le nom de la playlist, les playlists playlistId sont
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">getAllPlaylists</span>
TYPE DE DEMANDEGET
CORPS DE RÉPONSETableau JSON des noms de playlist
Exemple du corps de la réponse<span class="s1">["Pop","Jazz","Classic"]</span>
Disponible depuis11.0

Exemple :

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

Cet appel listera toutes les playlists disponibles.

listes de lecture accessibles par le serveur

Il s'agit de toutes les listes de lecture connues de UMS (base de données/cache activé). Ces noms de playlist doivent être utilisés pour les appels suivants pour ajouter ou supprimer des morceaux. L'ID de la playlist peut être utilisé pour naviguer directement vers la playlist en naviguant sur objectId $DBID$PLAYLIST$ concat databaseId.

IntentionFournit toutes les listes de lecture prises en charge (m3u, m3u8 et pls) et disponibles à partir du dossier configuré.
URI<span class="s1">`/api/</span><span class="s1">playlist</span><span class="s1">/</span>getserverplaylists` ``
TYPE DE DEMANDEGET
CORPS DE RÉPONSETableau JSON des noms de playlist
Exemple du corps de la réponse[{"playlistName":"Jazz","playlistId":5},{"playlistName":"Charts","playlistId":343}]
Disponible depuisbranche de développement

Exemple :

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

Cet appel liste toutes les playlists disponibles accessibles par UMS.

ajouter des chansons aux listes de lecture

L'information requise audiotrackid est délivré lors des demandes de navigation UPnP et peut être extrait de l'attribut de la réponse DIDL descMetadata

<ums-tags>
[...]
    <audiotrackid>ID</audiotrackid>
[...]
</ums-tags>
IntentionAjouter un morceau à la liste de lecture
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">addSongToPlaylist</span>
TYPE DE DEMANDEPOST
POSTER LE CODEaudiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
POSTER LE CODE exemple / description123/Pop
CORPS DE LA RÉPONSEAUCUN
Disponible depuis11.0

Exemple :

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

Cela ajoute la chanson portant l'ID 123 à la playlist Pop.

Retirer les titres de la liste de lecture

L'information requise audiotrackid est délivré lors des demandes de navigation UPnP et peut être extrait de l'attribut de la réponse DIDL descMetadata

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

``

IntentionRetirer le titre de la liste de lecture
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">removeSongFromPlaylist</span>
TYPE DE DEMANDEPOST
POSTER LE CODEaudiotrackid<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">/PLAYLIST</span>
POSTER LE CODE exemple / description123/Pop
CORPS DE LA RÉPONSEAUCUN
Disponible depuis11.0

Exemple :

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

Cela supprime la chanson avec l'ID 123 de la playlist Pop.

Créer une nouvelle liste de lecture

Le nom de la playlist doit être fourni sans chemin et sans extension de fichier. 

IntentionCréation de nouvelles playlists dans le dossier de playlist gérée
URI<span class="s1">/api/</span><span class="s1">playlist</span><span class="s1">/</span><span class="s1">createPlaylist</span>
TYPE DE DEMANDEPOST
POSTER LE CODE<span style="background-color: #bfe6ff; font-size: 11.76px; white-space: pre-wrap;">PLAYLIST_NAME</span>
POSTER LE CODE exemple / descriptionContemporain
CORPS DE RÉPONSEAUCUN
Disponible depuis11.0

Exemple :

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

Cet appel crée un nouveau fichier de playlist nommé Contemporary.m3u8 dans le dossier de playlist géré.

Exemple de code Java

Cet extrait de code montre comment utiliser l'API avec la bibliothèque 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();
    }

Code retour HTTP

| 200 | OK | | 204 | success if no content is supposed to be returned | | 401 | invalid api key | | 404 | requested object cannot be found | | 417 | API request failed | | 503 | external api is not enabled. Définir une clé_api dans UMS.conf avec une longueur de 12 caractères ou plus |