Autor Tema: [Codigo Terminado] Radio Stats propias (a mi manera)  (Leído 7569 veces)

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
[Codigo Terminado] Radio Stats propias (a mi manera)
« en: 22 de Octubre de 2009, 21:58:49 pm »
Hola, más de uno las pide, y aunque parece que sólo exista un script, hay muchos, pero hay uno que está posteado en el foro y es muy famoso y tal pero se ha quedado anticuado (al menos para mí)

En el radio_stats.php del otro código, quitando comentarios y etcéteras, sólo lo que es en la parte de extraer la información de shoutcast, son 40 líneas de código.

El mío, si eliminamos comentarios, el modo debug, los define, etc... se queda en ¡¡2/3 líneas!! (sin contar los echo's)

Voy a poner el código algo explicado, no obstante cualquier duda, posteadla y la responderé encantado.

Requisitos
- PHP 5.0.0 (o superior)
- Librerias SimpleXML (practicamente todos los hostings con PHP5 lo tienen)


Ventajas
- No hace uso de fsockopen (con lo cual, es una gran ventaja)


<?php
if(str_replace(&#39;.&#39;, &#39;&#39;, phpversion()) < 500){
	
die (&
#39;<font face="Tahoma" size="2"><strong>Error:</strong> Se necesita PHP 5.0.0 o superior</font>&#39;);
}
/*
-----------------------------------------
|
	
	
	
	
	
	
	
	
	
	
|
|     SCRIPT DE RADIO STATS BY TOPE     |
|
	
	
	
	
	
	
	
	
	
	
|
|
	
(c) todos los derechos reservados
	
|
|
	
	
	
	
	
	
	
	
	
	
|
|
	
	
	
www.topecb.es
	
	
	
	
|
|
	
	
	
	
	
	
	
	
	
	
|
|
	
	
	
	
	
	
	
	
	
	
|
|
	
	
	
	
	
	
	
	
	
	
|
-----------------------------------------

	
Requisitos: PHP 5.0.0 o superior con libreria simplexml
	

*/


header(&#39;Content-Type: text/html; charset=UTF-8&#39;);

/* CONFIGURA ESTOS 3 DATOS */
define(host, &#39;localhost&#39;); // Host (dominio o IP del servidor)
define(puerto8000);
define(pass, &#39;changeme&#39;);


$xml simplexml_load_file(&#39;http://&#39;.host.&#39;:&#39;.puerto.&#39;/admin.cgi?pass=&#39;.pass.&#39;&mode=viewxml&page=0&#39;);

if(isset($_GET[&#39;debug&#39;])){ echo &#39;<pre>&#39;; print_r($xml); echo &#39;</pre>&#39;; exit; }
/* Modo DEBUG: Si queremos ver que variables podemos usar (mejor dicho, que datos tiene el XML que podamos usar, podemos poner radiostats.php?debug y os aparecerá todo */

if($xml->STREAMSTATUS == 1){ // Si hay emision actualmente

	
$encode = ($xml->CONTENT==&#39;audio/aacp&#39;) ? &#39;AAC+&#39; : (($xml->CONTENT==&#39;audio/aac&#39;) ? &#39;AAC LC&#39; : &#39;MP3&#39;);
	
/* Sabiendo el tipo de contenido mime-type:(audio/XXXX) ponemos el códec utilizado */
	

	
echo 
"<strong>Oyentes:</strong> ".$xml->CURRENTLISTENERS." de ".$xml->MAXLISTENERS." (M&aacute;ximos alcanzados: ".$xml->PEAKLISTENERS.")<br />";
	
echo 
"<strong>Emisi&oacute;n:</strong> ".$xml->SERVERTITLE."<br />";
	
echo 
"<strong>Canci&oacute;n actual:</strong> ".$xml->SONGTITLE."<br />";
	
echo 
"<strong>Bitrate:</strong> ".$xml->BITRATE." kbps (".$encode.")<br />";
	
echo 
"<strong>Canciones anteriores:</strong><br />";
	
echo 
"<ol>";
	
foreach(
$xml->SONGHISTORY->SONG as $song){ // Hacemos un bucle con las ultimas canciones escuchadas
	
	
echo 
"<li>".$song->TITLE."</li>";
	
}
	
echo 
"</ol>";
	
echo 
"<br />Versi&oacute;n de shoutcast: ".$xml->VERSION."";
	

} else if(
$xml->STREAMSTATUS == 0) { // Si no se esta emitiendo nada...
	

	
echo 
"No hay emisi&oacute;n actualmente";
	

} else { 
// Si no se puede encontrar el servidor (porque no esté abierto shoutcast)
	
echo 
"No se puede encontrar el servidor shoutcast.";
}
?>




Podeis ver un ejemplo estático (no tengo ninguna radio ahora mismo para probarla) en la que coje los datos de un XML que he guardado: http://www.topecb.es/shoutcast.php?host=test&puerto=8000&pass=changeme (coje el XML de http://www.topecb.es/shoutcast.xml)

Además, antes de subirlo a vuestro host, podeis utilizar la url anterior que he puesto en la que poneis vuestro host, puerto y contraseña y os leerá el XML ;)


Saludos!

Pd. para quien no se crea que se queda en 2-3 lineas... (2 lineas, mas el abrir y cerrar PHP además de que el header no es del todo obligatorio)

<?php
header
(&#39;Content-Type: text/html; charset=UTF-8&#39;);
$xml simplexml_load_file(&#39;http://&#39;.host.&#39;:&#39;.puerto.&#39;/admin.cgi?pass=&#39;.pass.&#39;&mode=viewxml&page=0&#39;);
// AQUÍ YA PONEMOS EL IF PARA QUE SI ESTA EMITIENDO SALGA X COSA Y YA ESTA
?>
« Última modificación: 25 de Octubre de 2009, 21:28:10 pm por Tope »
Un Saludo, Tope >> Programador FIJO en PHPeros

Comunidad PHPeros

[Codigo Terminado] Radio Stats propias (a mi manera)
« en: 22 de Octubre de 2009, 21:58:49 pm »

Desconectado Masato

  • PHPero Avanzado
  • ****
  • Mensajes: 480
  • Karma: 12
  • Sexo: Masculino
  • <?php echo "Solo quiero aprender php"; ?>
    • Ver Perfil
    • Masato Design!
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #1 en: 22 de Octubre de 2009, 22:49:40 pm »
Muy buen aporte Tope!!, hay te va un +1

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #2 en: 22 de Octubre de 2009, 22:54:49 pm »
Gracias ^^
Un Saludo, Tope >> Programador FIJO en PHPeros

Desconectado NDSi

  • PHPero Avanzado
  • ****
  • Mensajes: 410
  • Karma: 8
  • Sexo: Masculino
    • Ver Perfil
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #3 en: 24 de Octubre de 2009, 05:42:09 am »
Increible aporte, te ganaste otro + :)

Desconectado TheGeorge

  • PHPero Avanzado
  • ****
  • Mensajes: 351
  • Karma: 13
  • Sexo: Masculino
    • Ver Perfil
    • websources
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #4 en: 25 de Octubre de 2009, 16:22:32 pm »
¡Increible code Tope!

Me gustó mucho. Una pregunta, ¿Con este code se acaban los problemas de algunos usuarios que no encuentran hosting con la función fsockopen(); verdad? Si es así, deberías ponerlo en el post para añadir un ventaja más de usar tu código.

Te ganas un karma  ;)
¡Solo sé, que nada sé...!

Desconectado TheGeorge

  • PHPero Avanzado
  • ****
  • Mensajes: 351
  • Karma: 13
  • Sexo: Masculino
    • Ver Perfil
    • websources
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #5 en: 25 de Octubre de 2009, 16:25:29 pm »
Otra cosita, me parece que le falta el actualizador de la página <meta>
¡Solo sé, que nada sé...!

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #6 en: 25 de Octubre de 2009, 21:32:34 pm »
Muchas gracias TheGeorge.

Sí, ese tipo de problemas se acaban :P ya no hace falta fsockopen.

El actualizador no lo he puesto, pero sería añadir <meta http-equiv="refresh" content="20">  (20 segundos)
Se puede actualizar mediante AJAX y no seria muy dificil añadir un pequeño sistema de caché para aligerar la carga. Me explico:
Si tenemos 100 usuarios online y las stats se actualizan cada 20 segundos, quiere decir que en un minuto, se "cargarían" 300 veces el archivo radio_stats.php, pero además, (esto es lo grave) se harían 300 fsockopen o conexiones para leer el XML.

Con lo cual, es algo importante, se podría que cada minuto se guardara el XML en un archivo (por ejempo como yo lo tengo, shoutcast.xml) y que cada vez que se actualizen las radio stats (me da igual el tiempo porque no consume casi recursos) solo cargue el archivo.

Saludos
Un Saludo, Tope >> Programador FIJO en PHPeros

Desconectado Alejo

  • PHPer@
  • **
  • Mensajes: 79
  • Karma: 1
  • Sexo: Masculino
  • Daniel Alejandro
    • Ver Perfil
    • Que te interesa...
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #7 en: 27 de Noviembre de 2009, 00:31:40 am »
mira lo que me sale

Parse error: syntax error, unexpected T_DNUMBER in /home/a9249358/public_html/stat.php on line 197
<?php
   
if Ser un phpero
   
{
      echo 
"No soy PHPero";
   }
   else
   {
      echo 
"PHPero user";
   }
?>


Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #8 en: 27 de Noviembre de 2009, 15:31:08 pm »
mira lo que me sale

Parse error: syntax error, unexpected T_DNUMBER in /home/a9249358/public_html/stat.php on line 197

Usando mis poderes mentales estoy leyendo magicamente tu codigo...

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #9 en: 27 de Noviembre de 2009, 17:12:59 pm »
Alejo, postea por favor el código que utilizas.

Creo que has añadido mi código a otro, porque mi código no tiene 197 lineas...
Un Saludo, Tope >> Programador FIJO en PHPeros

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #10 en: 30 de Noviembre de 2009, 15:19:31 pm »
Tope , una pregunta , ¿Como has suplantado la funcion que tanto detestamos?. Me refiero , que por que code lo has cambiado , es solo curiosidad :D

#Fdo. Physlet

Desconectado TheGeorge

  • PHPero Avanzado
  • ****
  • Mensajes: 351
  • Karma: 13
  • Sexo: Masculino
    • Ver Perfil
    • websources
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #11 en: 30 de Noviembre de 2009, 15:22:13 pm »
$xml = simplexml_load_file('http://'.host.':'.puerto.'/admin.cgi?pass='.pass.'&mode=viewxml&page=0');

Carga un archivo XML.
¡Solo sé, que nada sé...!

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #12 en: 30 de Noviembre de 2009, 15:22:44 pm »
ni leer siquillote??

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #13 en: 30 de Noviembre de 2009, 15:30:56 pm »
Gracias George , y sí , west , si lo lei pero como nunca he instalado una radio stats pues quería saber que codigo cambio para saberlo , ahora que soi voi a ponerlo en practica :D

#Fdo. Physlet

Desconectado Alariel

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Codigo Terminado] Radio Stats propias (a mi manera)
« Respuesta #14 en: 04 de Febrero de 2010, 20:41:25 pm »
Me da un error T.T en :

Parse error: syntax error, unexpected T_DNUMBER in /home/html/stats/radiostats.php on line 15


¿Me podeis ayudar?
« Última modificación: 04 de Febrero de 2010, 21:11:11 pm por Alariel »