ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Грфическая информация о станции (icecast2+php)

 

468
Klef @Klef
<?php
header ("Content-type: image/png");
$im = ImageCreateFromPng("blank.png");
$color = imagecolorallocate ($im, 255, 255, 255);


$file_name='http://wasteland.spb.su:8080/status2.xsl';
$r=fopen($file_name,'r');
$text=fread($r,1000);
fclose($r);
$mass=explode(",", $text);
$current="track".$mass [16];

$font="ft.ttf"; //имя шрифта
$raz=100; //длина до обрезки

$mr=imagettfbbox (6,0, $font, $current);
$pr=$mr[2];
$ds=strlen($current);

while ($pr >= $raz) {

$current1=substr($current,0,$ds);
$mr=imagettfbbox (6,0, $font, $current1);
$pr=$mr[2];
$ds=$ds-1;
}
if ($ds!=strlen($current)) {$currentr=$current1."...";}

imagettftext ($im, 6, 0, 15, 20, $color, $font,$current);
imagepng ($im);
imagedestroy ($im);
?>

Отредактировано Klef - 26.11.2010
349
Юрий @Всё-просто
Большое Спасибо но у меня ничего не отображается!

как с wasterland`a так и с моего icecasta не пашет

Отредактировано Всё-просто - 26.11.2010
468
Klef @Klef
поправил, щяс попробуй

349
Юрий @Всё-просто
отображение появилось! ща попробую на длинных названиях

Добавлено спустя 8 минут 50 секунд:
Нет, выходит за рамки название всё равно!

349
Юрий @Всё-просто
ой сорри ща перепроверю... длинну обрезки забыл сменить!



нет! все равно не переносится!

Отредактировано Всё-просто - 26.11.2010
349
Юрий @Всё-просто
ну че, все попытки исчерпаны?

1
Stiff @Stiff
Ребят, а можно то что под айскаст делалось, оптимизировать под шоукаст и RadioBoss? а то вручную писать где надо
какой трек заколибало...
правда скрипт для веб страницы знаю, но нужен именно юзербар.
А вот интерестно, можно скрестить юзербар с пхп в теле страницы?

6245
Тарас @tarasian666
можно все ;)

81
MonoLog @MonoLog
Момогите плз разобраться. Скрипт должен отображать информацию о слушателях с 2х маунтов, а отображает только с 1

<?php

$ip = "fm.asterios.tm";
$port = "8800";
$ice2_station = "Radio Asterios";

$success = 1;


$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
if(!$fp) {
$success=2;



//edit html to fit your stations site, this display is for offline status
echo' <table>
<tr>
<td width="100%" colspan="2">
<img border="0" src="images/offline.gif" width="22" height="22">
<b><font face="Arial" size="2" color="#FF0000">'.$ice2_station.' is currently

offline</font></b></td>
</tr>
</table>';
}




if($success!=2){ //if connection
fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla

Compatible)\r\n\r\n");
$page = '';
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
fclose($fp); //close connection
$page = ereg_replace(".*<pre>", "", $page); //extract data
$page = ereg_replace("</pre>.*", ",", $page); //extract data

$numbers = explode(",",$page); //bomb it and extract data

$listeners = $numbers[3];
$listeners = $numbers[14];

echo "$listeners";
}


?>

6245
Тарас @tarasian666
для начала - не совсем в тему
и где вы тут в скрипте увидели два маунта?

81
MonoLog @MonoLog
$listeners = $numbers[3];
$listeners = $numbers[14];
Соответственно 3 - 128 , 14 - 64 не?

6245
Тарас @tarasian666
такой метод не очень хорош, ну допустим в вашем случае он работает, но скрипт кто так писал?
$listeners = $numbers[3]; - здесь присваиваем количество слушателей 1-го маунта
$listeners = $numbers[14]; - здесь присваиваем количество слушателей 2-го маунта переписывая значение 1-го.

конечно будет показывать только второго маунта, так что делать надо так как минимум
$listeners = $numbers[3] + $numbers[14];
echo "$listeners";

81
MonoLog @MonoLog
Это логично, но все равно показывает значение только 1 маунта

6245
Тарас @tarasian666
хватит офтопить в ветке скрипты для icecast есть то что вам нужно

19
JaGGeR @JaGGeR
Перезалейте изображения

468
Klef @Klef
изображения доступны, а вот радио пока нет, так что пусто в тексте :)

33
CryNet @CryNet
Psyhodelic пишет:

<?php
$scdef = "your message";
$scip = "IP";
$scport = "Порт";
$scpass = "Пароль";

$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
if(!$scfp) {
$scsuccs=1;
echo''.$scdef.' is Offline';
}
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
######################################################################################################################
/////////////////////////part 1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//define xml elements
$loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS", "MAXLISTENERS", "BITRATE", "ICQ", "AIM");
$y=0;
while($loop[$y]!=''){
$pageed = ereg_replace(".*<$loop[$y]>", "", $page);
$scphp = strtolower($loop[$y]);
$$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
$$scphp = urldecode($$scphp);

// uncomment the next line to see all variables
//echo'$'.$scphp.' = '.$$scphp.'<br>';
$y++;
}
//end intro xml elements
######################################################################################################################
######################################################################################################################
/////////////////////////part 2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//get song info and history
$pageed = ereg_replace(".*<SONGHISTORY>", "", $page);
$pageed = ereg_replace("<SONGHISTORY>.*", "", $pageed);
$songatime = explode("<SONG>", $pageed);
$r=1;
while($songatime[$r]!=""){
$t=$r-1;
$playedat[$t] = ereg_replace(".*<PLAYEDAT>", "", $songatime[$r]);
$playedat[$t] = ereg_replace("</PLAYEDAT>.*", "", $playedat[$t]);
$song[$t] = ereg_replace(".*<TITLE>", "", $songatime[$r]);
$song[$t] = ereg_replace("</TITLE>.*", "", $song[$t]);
$song[$t] = urldecode($song[$t]);
$dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
$dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$r++;
}
//end song info
fclose($scfp);
}

header ("Content-type: image/png");
$im = ImageCreateFromPng("rj.png");
$color = imagecolorallocate ($im, 0, 0, 0);
imagettftext ($im, 8, 0, 20, 15, $color, "verdana.ttf", "On AIR: $servertitle");
imagettftext ($im, 8, 0, 20, 30, $color, "verdana.ttf", "Song: $song[0]");
imagettftext ($im, 8, 0, 20, 45, $color, "verdana.ttf", "Listeners: $currentlisteners");

imagepng ($im);
imagedestroy ($im);


?>

Ну как то так) Сразу скажу php тока начел изучать так что в скрипте много лишнего :)

Psyhodelic пишет:

<?php
$scdef = "your message";
$scip = "IP";
$scport = "Порт";
$scpass = "Пароль";

$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
if(!$scfp) {
$scsuccs=1;
echo''.$scdef.' is Offline';
}
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
######################################################################################################################
/////////////////////////part 1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//define xml elements
$loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS", "MAXLISTENERS", "BITRATE", "ICQ", "AIM");
$y=0;
while($loop[$y]!=''){
$pageed = ereg_replace(".*<$loop[$y]>", "", $page);
$scphp = strtolower($loop[$y]);
$$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
$$scphp = urldecode($$scphp);

// uncomment the next line to see all variables
//echo'$'.$scphp.' = '.$$scphp.'<br>';
$y++;
}
//end intro xml elements
######################################################################################################################
######################################################################################################################
/////////////////////////part 2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//get song info and history
$pageed = ereg_replace(".*<SONGHISTORY>", "", $page);
$pageed = ereg_replace("<SONGHISTORY>.*", "", $pageed);
$songatime = explode("<SONG>", $pageed);
$r=1;
while($songatime[$r]!=""){
$t=$r-1;
$playedat[$t] = ereg_replace(".*<PLAYEDAT>", "", $songatime[$r]);
$playedat[$t] = ereg_replace("</PLAYEDAT>.*", "", $playedat[$t]);
$song[$t] = ereg_replace(".*<TITLE>", "", $songatime[$r]);
$song[$t] = ereg_replace("</TITLE>.*", "", $song[$t]);
$song[$t] = urldecode($song[$t]);
$dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
$dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$r++;
}
//end song info
fclose($scfp);
}

header ("Content-type: image/png");
$im = ImageCreateFromPng("rj.png");
$color = imagecolorallocate ($im, 0, 0, 0);
imagettftext ($im, 8, 0, 20, 15, $color, "verdana.ttf", "On AIR: $servertitle");
imagettftext ($im, 8, 0, 20, 30, $color, "verdana.ttf", "Song: $song[0]");
imagettftext ($im, 8, 0, 20, 45, $color, "verdana.ttf", "Listeners: $currentlisteners");

imagepng ($im);
imagedestroy ($im);


?>
Ну как то так) Сразу скажу php тока начел изучать так что в скрипте много лишнего

Все сделал, но почему-то весвечивает такие ошибки:
$streamstatus = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$bitrate = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$servertitle = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$currentlisteners = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$maxlisteners = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$bitrate = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$icq = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist
$aim = HTTP/1.0 400 Bad Request Content-Type: text/html Source does not exist

В чем причина? у меня стоит ICe Cast2.

468
Klef @Klef
2 CryNet
месье, вы неудачник

33
CryNet @CryNet
Klef пишет:

2 CryNet
месье, вы неудачник

а если без оскорблений. я на полном серъезе в чем проблема? пробывал вставлял ваш код, который на 1 странице написан, то ничего нет.. не высвечивает ни единой троки.. php работает.. вся база исправна..

468
Klef @Klef
CryNet пишет:

Klef пишет:

2 CryNet
месье, вы неудачник

а если без оскорблений. я на полном серъезе в чем проблема? пробывал вставлял ваш код, который на 1 странице написан, то ничего нет.. не высвечивает ни единой троки.. php работает.. вся база исправна..

скрипт который вы "процитировали" для shoutcast сервера. Насчет моего скрипта рекомендую пройтись по всем пунктам, по порядку, для поиска ошибки.