API & Statistiques
API REST IRC — Discut.Biz
Affichez en direct sur votre site les infos d'un salon IRC : topic, utilisateurs, modes. Réponse JSON simple à intégrer.
Toutes les réponses sont au format JSON. Utilisez le proxy PHP ci-dessous si votre site bloque les requêtes cross-domain (CORS).
Exemples rapides
Infos d'un salon (JSON)
https://network.discut.biz/rest/service.php/channels/%23accueil
Utilisateurs connectés d'un salon
https://network.discut.biz/rest/service.php/channels/%23accueil/users
Réponse JSON exemple
{
"channel": "#Accueil",
"users": "43",
"topic": "Bienvenue dans le salon d'accueil de Discut.Biz",
"topic_author": "Cris",
"modes": "nPrt"
}
Widget JS — compteur d'utilisateurs live
#Accueil — … utilisateur(s) connecté(s)
<span id="accueilCount">…</span>
<script>
fetch('https://network.discut.biz/rest/service.php/channels/%23accueil')
.then(r => r.json())
.then(d => { document.getElementById('accueilCount').textContent = d.users || '0'; })
.catch(() => { document.getElementById('accueilCount').textContent = 'N/A'; });
</script>
Proxy PHP — anti-CORS + cache 60s
Créez un fichier proxy-irc.php à la racine de votre site. Ce proxy whiteliste les endpoints, ajoute un cache simple et renvoie du JSON proprement.
<?php
header('Content-Type: application/json; charset=utf-8');
$base = 'https://network.discut.biz/rest/service.php/';
$allowed = ['channels/%23accueil', 'channels/%23accueil/users'];
$endpoint = trim($_GET['endpoint'] ?? '');
if (!in_array($endpoint, $allowed, true)) {
http_response_code(400);
echo json_encode(['error' => 'Endpoint non autorisé']);
exit;
}
$cacheFile = sys_get_temp_dir() . '/' . md5($endpoint) . '.json';
if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 60)) {
readfile($cacheFile); exit;
}
$ch = curl_init($base . $endpoint);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10]);
$res = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code !== 200 || !$res) { http_response_code(502); echo json_encode(['error' => 'Source indisponible']); exit; }
file_put_contents($cacheFile, $res);
echo $res;
Utilisation du proxy
fetch('/proxy-irc.php?endpoint=channels/%23accueil')
.then(r => r.json())
.then(d => {
console.log('Topic:', d.topic);
console.log('Utilisateurs:', d.users);
});
Principaux endpoints disponibles
/network/statusStatut global du réseau (users, chans, servers)/network/maxRecords historiques du réseau/channels/biggest/10Top 10 des salons les plus peuplés/channels/%23salonInfos d'un salon spécifique/channels/%23salon/usersListe des utilisateurs d'un salon/operatorsListe des opérateurs IRC en ligne