4. Gestion des listes de lecture via l'API

Point de terminaison : /api/v2/playlists/
Méthodes HTTP : GET, POST
Authentification : requise
Paramètres :
server : ID du serveur radio

Cette API vous permet de gérer les listes de lecture de votre station.

Exemple : GET (récupération)

Récupérer toutes les listes de lecture du serveur ID 1 :

En Pyhton :

import requests
API_KEY = "6aNLaqRN.87L4xZ5LUXwWLCkK7dBswDafWZNcaLOB"

headers = {"SC-API-KEY": API_KEY}

response = requests.get(
  "https://demo.streaming.center:1030/api/v2/playlists/?server=1",
  headers=headers
)
print(response.json())

En PHP avec cURL :

$apiKey = "6aNLaqRN.87L4xZ5LUXwWLCkK7dBswDafWZNcaLOB";

$url = "https://demo.streaming.center:1030/api/v2/playlists/?server=1";

$headers = [
    "SC-API-KEY: $apiKey"
];

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// Désactiver SSL si nécessaire (à retirer en production)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "Erreur cURL: " . curl_error($ch);
    curl_close($ch);
    exit;
}

curl_close($ch);

// Output JSON brut
header('Content-Type: application/json');
echo $response;

// OU (sans le header et echo ci-dessous

// Version avec décodage JSON (optionnelle)
$data = json_decode($response, true);
print_r($data);

Exemple de sortie :

[
   {
      "id":1,
      "duration":9244067,
      "playlist_files_per_page":1000,
      "tracks_num":55,
      "name":"All music",
      "is_default":true,
      "is_random":true,
      "on_air":false,
      "directory_name":"",
      "current_track_order":-9,
      "server":1
   },
   {
      "id":2,
      "duration":9240712,
      "playlist_files_per_page":1000,
      "tracks_num":54,
      "name":"Morning shows",
      "is_default":false,
      "is_random":false,
      "on_air":true,
      "directory_name":"",
      "current_track_order":43,
      "server":1
   }
]

Description

Ce point de terminaison d'API renvoie un tableau de vos listes de lecture. Chaque liste de lecture possède les propriétés suivantes :

  • id : identifiant unique de la playlist
  • duration : durée de lecture de la playlist en millisecondes
  • playlist_files_per_page : paramètre spécifique limitant le nombre de pistes par page. Affecte uniquement l’affichage de la playlist dans l’interface d’administration web.
  • tracks_num : le nombre de pistes dans la playlist
  • name : Le nom de la playlist
  • is_default : valeur booléenne indiquant si la playlist est la playlist par défaut du serveur. Il est impossible de supprimer les playlists par défaut. Toute la musique que vous téléchargez sur le serveur est ajoutée à la playlist par défaut, utilisée comme solution de repli lorsque Auto DJ n'a rien d'autre à jouer. Il ne peut y avoir qu'une seule playlist par défaut sur le serveur. Dans notre cas, « Toute la musique » est la playlist par défaut du serveur 1.
  • is_random : indique si la liste de lecture est aléatoire ou séquentielle.
  • on_air : vrai si la playlist est en cours de lecture.
  • directory_name : indique si la liste de lecture est créée à partir d’un répertoire serveur avec l’option de synchronisation activée.
  • current_track_order : le numéro indiquant la position de lecture actuelle dans la liste de lecture.
  • server : numéro, identifiant du serveur actuel.

Exemple : POST (envoi)

Créer une playlist sur le serveur ID 1 :

En Python :

import requests
API_KEY = "6aNLaqRN.87L4xZ5LUXwWLCkK7dBswDafWZNcaLOA"

headers = {"SC-API-KEY": API_KEY}

response = requests.post(
    "https://demo.streaming.center:1030/api/v2/playlists/", 
    headers=headers, 
    json={"name":"New playlist","is_random":True,"server":1}
)

if response.ok:
    print("The playlist was created successfully")
    newly_created_playlist = response.json()

En PHP avec cURL :

$apiKey = "6aNLaqRN.87L4xZ5LUXwWLCkK7dBswDafWZNcaLOA";

$url = "https://demo.streaming.center:1030/api/v2/playlists/";

$payload = [
    "name"      => "New playlist",
    "is_random" => true,
    "server"    => 1
];

$headers = [
    "SC-API-KEY: $apiKey",
    "Content-Type: application/json"
];

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Désactiver SSL (car ton système bloque les certificats)
// À retirer en production
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "Erreur cURL: " . curl_error($ch);
    curl_close($ch);
    exit;
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

// Vérifier succès
if ($httpCode >= 200 && $httpCode < 300) {
    echo "The playlist was created successfully\n\n";

    $newPlaylist = json_decode($response, true);
    print_r($newPlaylist);
} else {
    echo "Erreur API (HTTP $httpCode): $response";
}

Points clés repris du script Python

  • SC-API-KEY envoyé dans les headers

  • JSON envoyé proprement via json_encode()

  • Vérification du succès comme response.ok → via HTTP code (200–299)

  • Décodage JSON du résultat

Pour créer une playlist, vous devez envoyer la charge utile JSON suivante :

  • name : nom de la nouvelle playlist
  • is_random : indiquez truesi vous souhaitez que la liste de lecture soit aléatoire.
  • server : un entier représentant l’identifiant du serveur.

Exemple : Requête POST qui importe un fichier de liste de lecture M3U.

Pour importer un fichier M3U, vous devez d'abord transférer les fichiers audio sur le serveur (via FTP ou l'interface web). Ensuite, envoyez une requête POST Content-Type avec l' en-tête spécifié multipart/form-data.
Voici comment procéder en Python :

import requests

API_KEY = "oaChhEn3.5Dnmm0rkJiJA4TNVE7266ypdOcp4Uakl"

headers = {"SC-API-KEY": API_KEY}

m3u_file = "import.m3u"
data = {
    "name":"m3u import",
    "is_random":True,
    "server":1
}
files = {
    'm3u': (m3u_file, open(m3u_file, 'rb'),)
}
response = requests.post(
    "https://demo.streaming.center:1030/api/v2/playlists/", 
    headers=headers, 
    data=data,
    files=files
)

En PHP avec cURL :

$apiKey = "oaChhEn3.5Dnmm0rkJiJA4TNVE7266ypdOcp4Uakl";

$url = "https://demo.streaming.center:1030/api/v2/playlists/";

$data = [
    "name"      => "m3u import",
    "is_random" => "true",   // en multipart, tout passe en string
    "server"    => "1"
];

$m3uFilePath = "import.m3u";

// cURLFile permet un upload multipart
$file = new CURLFile($m3uFilePath, mime_content_type($m3uFilePath), basename($m3uFilePath));

// on doit ajouter le fichier comme un champ
$data["m3u"] = $file;

$headers = [
    "SC-API-KEY: $apiKey"
    // NE PAS mettre Content-Type ici : cURL le génère automatiquement
];

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Désactive SSL si besoin (comme dans tes tests)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "Erreur cURL: " . curl_error($ch);
    curl_close($ch);
    exit;
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "HTTP CODE: $httpCode\n";
echo "Response:\n$response";

 

Permet de charger une playlist spécifique par son identifiant via la méthode GET et de la mettre à jour via la méthode PUT . La méthode DELETE permet de supprimer une playlist par son identifiant :

Point de terminaison : /api/v2/playlists/:id/
Méthodes HTTP : GET, PUT, DELETE
Authentification : requise
Paramètres :
id : ID de la playlist

 

Ce point de terminaison vous permet d'ajouter des morceaux à une playlist. Vous devez fournir un tableau d'identifiants musicaux pour les morceaux à ajouter. L'ordre des identifiants dans la charge utile est important : les morceaux seront ajoutés à la playlist exactement dans le même ordre que celui où ils apparaissent dans le tableau :

Point de terminaison : /api/v2/playlists/:id/add_tracks_ordered/
Méthodes HTTP : POST
Authentification : requise
Paramètres :
id : ID de la playlist

Exemple de charge utile :

[40, 52, 7]

Permet de programmer la lecture d'une liste de lecture. La lecture démarrera à la minute suivante. Par exemple, si vous appelez cette API à 11 h 30 min 25 s, un événement sera créé dans le planificateur à 11 h 31 min pour démarrer cette liste de lecture. Ce point de terminaison ne requiert aucune donnée :

Point de terminaison : /api/v2/playlists/:id/start_broadcasting/
Méthodes HTTP : POST
Authentification : requise
Paramètres :
id : ID de la playlist

  • playlist, liste de lecture, api, streaming, center
  • 0 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente?

Articles connexes

1. Commencer avec l'API

Ici et dans les sous-sections suivantes, nous expliquerons comment utiliser l'API d panneau de...

2. Authentification de l'API

La plupart des requêtes API visent à obtenir des informations sur l'état de la radio, mais dans...

3. Récupérer ce qui est diffusé avec l'API

Point de terminaison : /api/v2/history/ Méthodes HTTP : GET Authentification : non requise...

5. Podcasts via l'API

Obtenir une liste de podcasts : Point de terminaison : /api/v2/podcasts/ Méthodes HTTP : GET...