Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2008, 19:03
Avatar de korg1988
korg1988
 
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
De acuerdo [APORTE] Información de la transmisión con Shoutcast

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->conexion1024);
        }
        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!

Última edición por korg1988; 13/09/2009 a las 03:42