Shoutcast Server Information

Información del proyecto

Descripción
Descarga
Versión
API
Variables de informacíón
Ejemplo

Descripción

Class PHP que permite obtener informacion acerca de la transmision de un servidor de streaming Shoutcast

Descarga

Source: shoutcast.php

Versión

2.2 (15-09-2010)

API

public Shoutcast::server_online (void)
Devuelve TRUE o FALSE si el server esta en linea o no (Esto es distinto a si el server esta transmitiendo o no, esa informacion se obtiene con la variable STATION_STATUS)

public Shoutcast::admin_mode (void)
Devuelve TRUE si se esta trabajando en modo admin o FALSE en caso contrario

public Shoutcast::get (string $var)
Devuelve el valor de la variable ingresada, y en caso de no existir la variable o no ser accesible devuelve una cadena vacia

Variables a las que se puede acceder

En modo simple (sin iniciar sesion como administrador):

CURRENT_LISTENERS : Cantidad de oyentes actuales
STATION_STATUS : Vale TRUE si el servidor esta transmitiendo o FALSE en caso contrario
LISTENERS_PEAK : Pico máximo de oyentes simultaneos en un momento
LISTENERS_LIMIT : Capacidad máxima de oyentes permitida
UNIQUE_LISTENERS : Cantidad de oyentes únicos (IP)
BITRATE : Frecuencia de la transmisión
CURRENT_SONG : Título de la canción actual

En modo admin:
Se puede acceder a todas las variables del modo simple y las siguientes

STATION_GENRE : Genero de la estación de radio
STATION_URL : Dirección web de la estación
STATION_TITLE : Título de la estación
IRC : IRC de la estación
ICQ : ICQ de la estación
AIM : AIM de la estación
CONTENT_TYPE : MIME del contenido transmitido
SERVER_VERSION : Versión del servidor
SONG_HISTORY : Historial de canciones – Array ( TIMESTAMP, TITLE )
LISTENERS : Información de los oyentes – Array ( HOST, PLAYER, UNDER_RUNS, CONNECT_TIME, POINTER, UID})

Ejemplo de Uso

include 'shoutcast.php';
 
$s = new Shoutcast("xxx.xxx.xxx.xxx", "8000", "usuario", "password", 10);
 
if ( ! $s->server_online() )
    echo 'Server offline';
else
{
    if ( 0 == $s->get('STATION_STATUS') )
        echo 'Transmition off';
    else
    {
        $format = '<strong>%s:</strong> %s <br />';
 
        //Print Current Listeners
        printf ($format, 'Current Listeners', $s->get('CURRENT_LISTENERS'));
 
        //Print Current Song
        printf ($format, 'Current Song', $s->get('CURRENT_SONG'));
 
        //Print Song History
        if ( $s->admin_mode() )
        {
            $str_history = '';
            foreach ( $s->get('SONG_HISTORY') as $song )
                $str_history .= '<br />' . $song['TITLE'];
 
            printf ($format, 'Song History', $str_history);
        }
    }
}
  • Knight
    #1 escrito por Knight  hace 2 años

    Hola!
    La verdad es que tengo un problema,.. estoy escuchando mi propia radio, hago la prueba en el server con php5 y,… el servidor del shoutcast está offline? Pero si la estoy escuchando! Curiosidad me voy a la pagina del server y me carga perfectamente,… que es lo que pasa?

  • Cristián
    #2 escrito por Cristián  hace 2 años

    Hola @Knight, deberias chequear que estes apuntando a la IP y puerto correctos..

    Tu server PHP esta en la misma computadora donde esta el servidor shoutcast? las pruebas que estas haciendo son locales???

    Ahora bien, si estas ejecutando el script desde otro servidor, hacia tu pc, deberias verificar que los puertos esten abiertos y redirigidos correctamente en tu router! La clase funciona perfectamente ya que mucha gente la esta utilizando, deberias revisar esas otras cuestiones que son mas de Red, que de codigo

    Suerte

  • Daniel García
    #3 escrito por Daniel García  hace 1 año

    Esto funciona igual para este servidor???

    giss.tv

  • Cristián
    #4 escrito por Cristián  hace 1 año

    No Daniel, solo para shoutcast

  • Sergio Solano
    #5 escrito por Sergio Solano  hace 1 año

    Tengo mi radio, funciona normal
    En mi server http://192.168.1.111:8000/ quiero entrar en admin log in pero no se cual es mi usuario.

  • Cristián
    #6 escrito por Cristián  hace 1 año

    Hola sergio, en el shoutcast server monitor, hay un boton que dice Edit Config, ahi figuran tu usuario y contraseña, o al menos la contraseña y por default, el usuario es “admin”

    Suerte :)

  • Lorenzo Vinueza
    #7 escrito por Lorenzo Vinueza  hace 1 año

    Disculpa como puedo hacer funcionar el song_history

  • Cristián
    #8 escrito por Cristián  hace 1 año

    Hola lorenzo, podrias usar el ejemplo que esta al final del codigo de ejemplo, bajo el comentario //List Song History

    Basicamente SONG_HISTORY es un Array, como dice en la documentacion, por lo que podrias hacer un print_r() del mismo para conocer su contenido y asi saber de que manera procesarlo.

    Recorda que SONG_HISTORY esta solo en Admin Mode, para lo que necesitaras el usuario y la contraseña del servidor

  • Greci
    #9 escrito por Greci  hace 1 año

    HOla, estoy usando este script pero no logro ver el listado de temas emitidos.
    Estoy probando el codigo del ejemplo que sale en esta pagina, coloco mis datos de usuario y contraseña pero solo logra desplegar la informacion básica y no el historial de canciones.
    Si entro directamente a la pagina de shoutcast con mis datos si puedo ver el listado de temas pero desde este escript no.

    Que puede estar pasando? he revisado el codigo y aparentemente no veo nada anormal.

    Gracias

  • Daniel
    #10 escrito por Daniel  hace 1 año

    Hola, discula las molestias, queiro insertar el codigo pero no se como hacerlo, pongo en html y no sale nada, en que campo de html de la pagina va puesto?? gracias

  • Cristián
    #11 escrito por Cristián  hace 1 año

    Hola Greci, si podes postea el codigo que estas utilizando para ver si puedo ayudarte

  • Cristián
    #12 escrito por Cristián  hace 1 año

    Daniel, no es html esto, es PHP, por ende, no hay un campo en donde insertarlo, primero tendrias que aprender PHP. y luego implementar la clase en tu proyecto

  • Seba
    #13 escrito por Seba  hace 1 año

    Hola, como se puede hacer el Print pero de la variable (admin) LISTENERS?

    Trato de copiar el codigo como estan en SONG_HISTORY pero no puedo conseguirlo.

    Plis HELP

  • Cristián
    #14 escrito por Cristián  hace 1 año

    Hola seba, te explico
    LISTENERS es un array, con todos los oyentes, por eso al hacer foreach obtenes cada uno de esos oyentes, ahora, cada oyente es a su vez otro array, por ende, tendrias que decirle que clave es la que quieres!..
    Fijate que las claves del array de oyente esta especificada en la lista de variables.
    Por las dudas te la transcribo aqui.

    Array ( HOST, PLAYER, UNDER_RUNS, CONNECT_TIME, POINTER, UID})

    por ende, si quieres obtener el Reproductor por ejemplo que esta usando cada uno de tus oyentes deberias hacer algo asi

    foreach($s->get(‘LISTENERS’) as $listener) {
    echo $listener['PLAYER']; //Aca le pedis la clave que devuelve el Reproductor usado
    }

    Lo mismo con cualquier otra clave del array

  • roger
    #15 escrito por roger  hace 1 año

    cuales son las lineas q hay q editar no se entiende porfa explicar

  • Cristián
    #16 escrito por Cristián  hace 1 año

    hola roger, no hay que editar ninguna linea, para utilizar la clase tenes que tener conocimientos de PHP Orientado a Objetos, y solo incluir el archivo shoutcast.php en tu codigo e instanciar la clase como un objeto, luego, utilizar los metodos nombrados mas arriba para poder acceder al estado del servidor o a las distintas variables… en el codigo de ejemplo hay varios casos usados en el mismo ejemplo, solo deberias basar tu codigo en lo se parezca mas a lo que necesitas hacer

  • Fernando
    #17 escrito por Fernando  hace 1 año

    Hola Cristián !
    Bueno sinceramente, llevo tiempo buscando esto !
    La verdad, muy buena tu predisposición al subir este material genial.
    Te cuento que soy un novato en php, todo lo que he hecho hasta ahora, es con mucha ayuda

    Bien, subi todo los archivos, shoutcast.php’ y ‘ver_info.php’
    Dentro de ‘ver_info.php’ pegue el código con el cual se tendría que conectar con el servidor y darme los datos,
    Cree un iFrame redirigiendo a ‘ver_info.php’
    Me dice que el Server está offline.
    ¿Puede ser que no este bien el host y el puerto?

    Aclaro, uso un servidor gratis, no tengo deseos de pagar uno, solo lo hago por hobbie, no por algún trabajo ni nada por el estilo, el servidor que uso es el de:
    http://freeshoutcast.com/
    Y el host+puerto es..
    http://free.freeshoutcast.com:16038/

    ¿Qué estaré haciendo mal?

  • Greco
    #18 escrito por Greco  hace 1 año

    Hola,

    Despues de arto tiempo vuelvo a retomar el script para intentar usarlo pero segía sin funcionar incluso hasta con el mismo codigo que pones de ejemplo.

    basicamente lo que no funciona era la parte de admin, osea no mostraba los temas recientes y la informacion de los auditores (ip etc)

    hice un print_r y me mostraba los array con valor 0 asi que decidí hecharle una mirada a la clase shoutchast.php

    Es así como probando y probando lo pude hacer funcionar eliminando algo en la clase, específicamente en las lineas 247 y 257 en donde aparece:

    foreach ( (array)$xml->SONGHISTORY->SONG as $song )
    ….
    foreach ( (array)$xml->LISTENERS->LISTENER as $listener )
    ….

    Elimine (array) en las dos lineas y ahora funciona todo correctamente.

    quedando asi: foreach($xml-> ….

    Espero le sirva a alguien.

    Saludos

  • Cristián
    #19 escrito por Cristián  hace 1 año

    Hola greco, muchas gracias por tu aporte.
    Despues de leerlo, me puse a revizar la clase y descubrí que el error no era ese en particular, si bien ese cambio ayudo a darle solución a tu problema no era el foco del problema general que había al manipular el objeto SimpleXMLElement

    Cambie un poco la forma de manejar la información leída para asegurarme el tipo de datos recibido, así que.. ahora, en teoría (aunque no pude probarlo mucho tiempo) no habría problemas en adelante.

    Cualquier cosa, ya saben donde encontrarme jaja

  • Greco
    #20 escrito por Greco  hace 1 año

    Hola, gracias por todo :)

  • Sebas (Uruguay)
    #21 escrito por Sebas (Uruguay)  hace 1 año

    Hola gente. Ahora si que traigo una duda de las buenas. Les cuento. Estoy utilizando el shoutcast para transmitir mi radio en internet y todo va de maravilla. La consigna es la Siguiente. Si han visto cuando reproducimos la emisora por winamp, se actualiza solo el nombre del tema. La pregunta es: Se puede hacer algo similar pero para un html. Es decir, que cuando cambie el nombre del tema, en forma automatica cambie el nombre en el sitio web tambien? Gracias. Un abrazo.

  • Cristián
    #22 escrito por Cristián  hace 1 año

    Sebas, eso lo podes hacer con Ajax chequeando cada cierto intervalo de tiempo el estado de shoutcast!
    Saludos!

  • Jose
    #23 escrito por Jose  hace 1 año

    chekea el script en la parte de los listeners ,cuando no hay nadie conectado a la radio si bien funciona el escript te devuelve este error :

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 264

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 267

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 274

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 275

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 276

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 277

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 278

    Notice: Uninitialized string offset: 0 in C:\wamp\www\shoutcast.php on line 279

  • Rommel Flores
    #24 escrito por Rommel Flores  hace 1 año

    Que tal Cristian, muy bueno el material, la pregunta es, puede ayudarnos para que este material tengo el isguiente cambio, pues la idea es que se actualice automaticamente segun avanza, el shoutcast, yo uso el refesh pero se actualiza la pagina completa? o que idea nos puedes dar.

  • Cristián
    #25 escrito por Cristián  hace 1 año

    Hola Rommel, lo que podrías hacer es utilizar AJAX, y realizar peticiones cada una cierta cantidad de segundos al servidor para refrescar solamente la información que necesites.
    Saludos

  • Garrizano
    #26 escrito por Garrizano  hace 5 meses

    Hola, esta muy bueno ese script, te felicito.

    Pero tengo un problema y espero puedan ayudarme.
    El problema radica en obtengo un error de la funcion fsockopen(): “unable to connect to radio.ciudadmetropolis.com:7000 (Connection timed out)”.

    Ese error me sale cuando corro el ejemplo desde un host gratis que tengo; pero si lo pruebo localmente con server en mi PC, si funciona de maravilla.

    Pienso que puede ser que esa funcion no este permitida en la configuracion del host gratis, es de “000webhost”.

    Espero haber explicado bien mi problema. De antemano muchas gracias por su ayuda.

  • Greco
    #27 escrito por Greco  hace 3 meses

    Garrizano, ese problema se debe justamente a lo que comentas, muchos servidores, sobre todo los gratuitos tienen desabilitada esa opcion, no se puede usar fsockopen(), 000webhost es uno de ellos.

    Saludos.

  • lekin
    #28 escrito por lekin  hace 1 mes

    Hola! Estoy intentando usar esa clase con el Shoutcast DNAS 2.0 y no me funciona. Dice que esta conectado el servidor pero que no esta transmitiendo :/

    En teoria funciona el script con el DNAS 2.0

    Muchas gracias por compartir su trabajo!

    bertrand

  • lekin
    #29 escrito por lekin  hace 1 mes

    ok. solo tuve que cambiar la linea 208:
    fputs($this->fp, “GET /admin.cgi?sid=1&mode=viewxml HTTP/1.0\r\n”);

    le faltaba el sid=1 como param!

  • Puedes usar las siguientes etiquetas HTML: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <pre> <q> <strike> <strong>

  • Feed de comentarios de esta entrada
Ir arriba