Hola a todos;
Ya he buscado en el buscador y no he encontrado nada; Estoy buscando un script (en php puro, nada de bloques de Nuke etc) para leer los datos basicos de una radio shoutcast, al estilo server de cs ( que por cierto, si lo teneis a mano tambien me interesa... no lo quiero de gamespy, sino uno que se pueda modificar ^^); Los oyentes, la musica que se esta escuchando, etc.
Pero el problema que tengo esque de variables se poco, y por lo que veo, casi todos los servidores tienen bloqueado el fsockopen(); , almenos los gratuitos ^^
Sabeis de alternativas? o es imposible correr un script de estas caracteristicas hoy en dia...
Repito, no quiero administrarlo, simplemente una lectura basica del archivo XML o lo que use shoutcast, para saber los datos basicos... asias.
El codigo que he pillado por ahi y me da error es:
<?
// grabxml 0.1.2 (php)
// 1-12-2001 t. pepper
// yay i made this
// yay i stole some of it off php.net's xml docs pages
// SET THESE VARIABLES
$password="changeme";
$host="host.shoutcast.com";
$port=8000;
// you can change these event handlers to do whatever
// you want upon receiving the XML data. right now, they
// just dump the parsed xml in as pretty a way as they can
function startElement($parser, $name, $attrs) {
global $depth, $lastelem;
if($lastelem!='data') echo "\n";
for ($i = 0; $i < $depth[$parser]; $i++) echo " ";
echo "+ $name ";
$depth[$parser]++;
$lastelem='start';
}
function endElement($parser, $name) {
global $depth, $lastelem;
//echo "/$name ";
if ($lastelem=='data') echo "\n";
$depth[$parser]--;
}
function characterData($parser, $data) {
global $depth, $lastelem;
$data=trim($data);
if ($data) { echo $data; $lastelem='data'; }
}
// here we go
$depth = array();
$lastelem="";
// set up html
echo "<HTML>\n<HEAD><TITLE>XML parsing for $host:$port</TITLE></HEAD>\n<B><PRE>\n";
// connect to sc_serv
$sp=fsockopen($host,$port,&$errno,&$errstr,10);
if(!$sp) die("Could not contact $host:$port - $errstr\n");
set_socket_blocking($sp,false);
// send request
fputs($sp,"GET /admin.cgi?pass=$password&mode=viewxml HTTP/1.1\nUser-Agent:Mozilla\n\n");
// fetch response, timeout if it takes > 15s
for($i=0; $i<30; $i++) {
if(feof($sp)) break; // exit if connection broken
$sp_data.=fread($sp,31337);
usleep(500000);
}
// strip HTTP headers so all we have is XML data
$sp_data=ereg_replace(".*<\?xml ","<?xml ",$sp_data);
/* xml code goes here, here's a plain empty parser */
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!xml_parse($xml_parser, $sp_data, 1)) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
xml_parser_free($xml_parser);
// close up HTML
echo "</PRE></BODY></HTML>";
?>