EDITO: Esta version quedo vieja!. Ya saque la version 2.0 con muchas mas features
Mirala en este post
http://www.forosdelweb.com/f18/aport...v2-0-a-735207/
-----------------------------------------------------------------------------------------------------------------------------------------
Hola, bueno queria dejar mi aporte, y el otro dia arme un script para un amigo que tiene un sitio y que habia configurado shoutcast para pasar radio, entonces le dije que le iba a crear este script y bueno, ahora no se que hacer con el asi que lo pongo aca, para compartirlo.
Espero que les sirva, quiza haya muchos en internet dando vuelta, pero bueno esta Class esta en español completamente ya que la hice desde 0, asi que pueden modificarla con facilidad y entenderla mejor que muchas que andan dando vuelta en ingles y con mucho codigo al pepe!
Aca va el codigo de la class
shoutcast.php Código PHP:
<?php
/**
* @autor Cristián Pérez
*/
class Shoutcast
{
private $conexion, //socket resourse
$datos = array
(
'estado' => 0, //Estado del server (Online, Offline)
'oyentes_actuales' => 0, //Oyentes que hay actualmente
'oyentes_limite' => 0, //Limite de oyentes del servidor
'oyentes_pico' => 0, //Pico maximo de oyentes que tuvo el server
'oyentes_unicos' => 0, //oyentes unicos que tiene el server
'frecuencia' => 0, //Frecuencia de transmision
'cancion_actual' => '' //Cancion actual que se escucha
);
public $host,
$conectado, //boolean
$puerto,
$tiempo_out = 30,
$online_img,
$offline_img;
public function Conectar()
{
if(($this->conexion = @fsockopen($this->host, $this->puerto, $errno, $errstr, $this->tiempo_out)) == true)
{
$this->ObtenerDatos();
}
}
public function Cerrar()
{
@fclose($this->conexion);
}
/* Proceso */
private function Leerdatos()
{
fputs($this->conexion, "GET /7.html HTTP/1.0\r\nUser-Agent: SC Status (Mozilla Compatible)\r\n\r\n");
while(!feof($this->conexion))
{
$contenido .= @fgets($this->conexion, 1024);
}
return $contenido;
}
private function ObtenerDatos()
{
$contenido = ereg_replace(".*<body>", "", $this->Leerdatos());
$contenido = ereg_replace("</body>.*", ",", $contenido);
$contenido = explode(",",$contenido);
$this->datos['estado'] = $contenido[1];
$this->datos['oyentes_actuales'] = $contenido[0];
$this->datos['oyentes_limite'] = $contenido[3];
$this->datos['oyentes_pico'] = $contenido[2];
$this->datos['oyentes_unicos'] = $contenido[4];
$this->datos['frecuencia'] = $contenido[5];
$this->datos['cancion_actual'] = $contenido[6];
}
/* FUNCIONES */
public function Estado()
{
if(!$this->conexion) {
return $this->Offline();
} else {
return ($this->datos['estado'] == 1) ? $this->Online() : $this->Offline();
}
}
public function Oyentes()
{
return $this->datos['oyentes_actuales'];
}
public function Limite()
{
return $this->datos['oyentes_limite'];
}
public function Pico()
{
return $this->datos['oyentes_pico'];
}
public function Unicos()
{
return $this->datos['oyentes_unicos'];
}
public function Frecuencia()
{
return $this->datos['frecuencia'];
}
public function CancionActual()
{
return $this->datos['cancion_actual'];
}
/* ESTADOS */
private function Online()
{
$this->conectado = true;
return $this->online_img;
}
private function Offline()
{
$this->conectado = false;
return $this->offline_img;
}
}
?>
y aca un ejemplo de como usarla
ejemplo.php
Código PHP:
<?
/**
* @ejemplo Ejemplo de como configurar y utilizar las funciones del script
*/
include("shoutcast.php");
//Crear Objeto
$server = new Shoutcast;
//Configurar
$server->host = "xxx.xxx.xxx.xxx"; //Ip del servidor
$server->puerto = "8000";
$server->tiempo_out = 10; // si borras esta linea viene por defecto = 30
$server->online_img = '<img src="online.gif" border="0" /> Radio Online'; //puede ser texto tambien sino
$server->offline_img = '<img src="offline.gif" border="0" /> Radio Offline';
$server->Conectar();
?>
<table>
<tr>
<td><?=$server->Estado();?></td>
</tr>
<?
if($server->conectado == true)
{
?>
<tr>
<td>Estamos escuchando: <?=$server->CancionActual();?></td>
</tr>
<tr>
<td>Estamos transmitiendo a <?=$server->Frecuencia();?> kbps</td>
</tr>
<tr>
<td>Hay <?=$server->Oyentes();?> Oyentes de <?=$server->Limite();?> Permitidos (<?=$server->Unicos();?> oyentes unicos)</td>
</tr>
<tr>
<td>El maximo de oyentes simultaneos fue de <?=$server->Pico();?> oyentes</td>
</tr>
<?
}
?>
</table>
<?
$server->Cerrar();
?>
Para los que no saben que es Shoutcast:
http://es.wikipedia.org/wiki/SHOUTcast http://www.shoutcast.com/
Bueno sin mas que decir les dejo un saludo! y espero que a alguien le sirva, quiza en unos dias suba una actualización con algunas funciones mas!