ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
3   •   Посмотреть все темы

Скрипты для Icecast

 

1572
KyPIIaToB @KyPIIaToB
JaST пишет:

блин ребят ну вы можете помочь!?
Скрипт нужен для считывания статистики с **********

Ссылку нормальную на поток давай.
Да и не вижу проблем, выше готовые скрипты, бери и используй на свой вкус, если лень пару страниц полистать и почитать, твои проблемы)

Отредактировано KyPIIaToB - 18.03.2012
129
UAFM @UAFM
<?php
$file_name='ip:9001/status2.xsl?mount=/test;

$r=fopen($file_name,'r');
$text=fread($r,2000);
fclose($r);
$mass=explode(",", $text);
echo substr(iconv("UTF-8","cp1251",$mass [17]),3);

?>

Вот есть скрипт , а как сделать если у меня еще один маунт - нонстоп ??? Тему пересмотрел , есть такие но они не работают у меня.

8
Иван @zim0vik
tarasian666 пишет:


<?php

$data = file_get_contents('url/status.xsl?mount=/live');

function antara($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}

if(antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>") ==''){$data = file_get_contents('url:88/status.xsl?mount=/nonstop');}
$data = iconv("utf-8", "cp1251", $data);
$title = antara($data, "Stream Title:</td>\n<td class=\"streamdata\">","</td>");
$description = antara($data, "Stream Description:</td>\n<td class=\"streamdata\">","</td>");
$content_type = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
$Mount_started = antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>");
$Bitrate = antara($data, "Bitrate:</td>\n<td class=\"streamdata\">","</td>");
$Current_listeners = antara($data, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
$Peak_listeners = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
$Stream_genre = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
$Stream_url = antara($data, "Stream URL:</td>\n<td class=\"streamdata\">","</td>");
$Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
$hellp_curr_listeners = antara($hellp, "Сейчас слушают:</td>\n<td class=\"streamdata\">","</td>");
$hellp_peak_listeners = antara($hellp, "Максимум было</td>\n<td class=\"streamdata\">","</td>");
$Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
$Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;

$staylst=$Curr_listens+1;
echo '<span style="font-size: 0.72em; font-family:Trebuchet MS, Tahoma, Arial, sans-serif; color:#3090c3"><b>Название радио:</b> '.$title.' <br>
<b>За пультом:</b> '.$description.' <br>
<b>Битрейт:</b> '.$Bitrate.' <br>
<b>Сейчас слушают:</b> '.$Curr_listens.' <br>
<b>Максимум слушало:</b> '.$Peak_listens.' <br>
<b>Сейчас в эфире:</b> '.$Current_song.' <br>
<br>
<center><input type="button" value="Слушать радио" onclick="location.href=\'url:88/live.m3u\'" /></center>';
?>


Доброе время суток!
Есть два маунта /live и /nonstop и есть этот скрипт. Если Эр-джей(ДиДжей да как угодно) подключается к эфиру(на маунт /live) то в скрипте всё равно отображается статистика /nonstop'a. Хотелось бы что бы скрипт сам переключался на ту инфу где Эр-джей(ДиДжей да как угодно) и после окончания эфира, обратно на /nonstop.
Спасибо!

168
Jon-coool @Jon-coool
Друзья!
А есть у кого нибудь скрипт который выводит отигравшие песни?

8
Иван @zim0vik
Jon-coool пишет:

Друзья!
А есть у кого нибудь скрипт который выводит отигравшие песни?


Нашёл в этой теме
<?php
function get_title ($mount){
$r=fopen($mount,'r');
$text=fread($r,2000);
fclose($r);
$mass=explode(",", $text);
return $mass [16];
}
$mount1 = "ссылка на status2xsl первого маунта";
$mount2 = "--//-- второго --//--";
$mount3 = "--//-- третьего --//--";
if(get_title($mount1) !='')
{
echo get_title($mount1);
}
elseif(get_title($mount2) !='')
{
echo get_title($mount2);
}
else
{
echo get_title($mount3);
}
?>

223
Игорь @devilben
Jon-coool пишет:

Друзья!
А есть у кого нибудь скрипт который выводит отигравшие песни?

Можно сделать через Last.fm, в этой теме есть скрипт на php который парсит статус icecast и скробблит на Last.fm.
На сайт можно потом выводить с помощью ********** jqury-плагина

168
Jon-coool @Jon-coool
aleksanders пишет:

Короче, если что не так, вы хоть не смейтесь. ))) Главное работает...
<?php

$data = file_get_contents('http://127.0.0.1:88/status.xsl?mount=/radio');

function antara($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}

if(antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>") ==''){$data = file_get_contents('http://127.0.0.1:88/status.xsl?mount=/nonstop');}

$Mount_started = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
$Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
$Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
$Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;
$staylst=$Curr_listens+1;
echo ''.$Current_song.'';
?>

Почему при русской песни пишет какие то иероглифы, как исправить?

1572
KyPIIaToB @KyPIIaToB
Jon-coool пишет:

aleksanders пишет:

Короче, если что не так, вы хоть не смейтесь. ))) Главное работает...
<?php

$data = file_get_contents('http://127.0.0.1:88/status.xsl?mount=/radio');

function antara($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}

if(antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>") ==''){$data = file_get_contents('http://127.0.0.1:88/status.xsl?mount=/nonstop');}

$Mount_started = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
$Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
$Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
$Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;
$staylst=$Curr_listens+1;
echo ''.$Current_song.'';
?>

Почему при русской песни пишет какие то иероглифы, как исправить?

Если на странице icecast иероглифы, то разбирайся с тем, чем ты вещаешь, елси в айсе норм, но криво на сайте, то ковыряйся в кодировке.. вообще по кодировке тем полно, поиск в помощь

168
Jon-coool @Jon-coool
Скрипт 10 треков не выводит ничего. Хотя в базе данных все нормально. и странциу выводит в иегоглифами.

168
Jon-coool @Jon-coool
В файле track.php изменил на нужное.

11
onix007 @onix007
Народ помогите пожалуйста !! нужен скрипт для айс каста ститистики! что б показывало кто из Dj онлайн и скоко слушателей! плиз помогите найди скрипт) Зарание спс!!!

6245
Тарас @tarasian666
на предыдущей странице есть подходящий скрипт

11
onix007 @onix007
да поставил их не роботают почему!((( мне над что б видел и нон стоп и бродкастер!

11
onix007 @onix007
плизк ктонить кинте сюда)

6245
Тарас @tarasian666
onix007 пишет:

да поставил их не роботают почему!((( мне над что б видел и нон стоп и бродкастер!

он как раз это и умеет делать

11
onix007 @onix007
какой именно кинте сюда

1572
KyPIIaToB @KyPIIaToB
onix007 пишет:

какой именно кинте сюда

Ну неужели так было тяжело прочитать всю страницу обсуждения?!!! Тебе сказали, на предыдущей странице
**********

1572
KyPIIaToB @KyPIIaToB
dimajak пишет:

Нужен был список маунтов с внешнего Icecast, обычные скрипты не работали из-за наличия символа запятой в названии трека:$mass=explode(",", $text);
набросал небольшой скрипт:<?php
function add_mnt($val) {
$mnt_p = array();
for($i = 0, $pos = 0; $i < 6; $i++) {
$pos = strpos($val, ',');
$znach = ($pos == 0 ? ($i==5 ? $val : '') : substr($val, 0, $pos));
switch($i) {
case 0:
$mnt_p['mnt'] = $znach;
break;
case 3:
$mnt_p['lst'] = $znach;
break;
case 5:
$mnt_p['cur'] = $znach;
break;
}
$val = substr($val, $pos+1);
}
return $mnt_p;
}

$handle = file("http://192.168.0.1:8000/status2.xsl");
$mass = $handle[5];
$mnt = array();
while($mass<>'') {
$pos = strpos($mass, ',/');
if($pos == 0) {
$mnt[] = add_mnt($mass);
break;
} else {
$mnt[] = add_mnt(substr($mass, 0, $pos));
$mass = substr($mass, $pos+1);
}
}

foreach ($mnt as $val) {
echo $val['mnt'] ." ". $val['lst']."<br>";
}

echo "Stations=".count($mnt).'<br>';
?>

на выходе $mnt['mnt'] - маунт, $mnt['lst'] - количество текущих слушателей, $mnt['cur'] - текущий трек.
Может кому пригодится.

Забыл сказать, что он сделан под стандартный веб айса, под KH не подойдет.

1572
KyPIIaToB @KyPIIaToB
dimajak пишет:

KyPIIaToB пишет:

Забыл сказать, что он сделан под стандартный веб айса, под KH не подойдет.

Про KH не знаю совсем ничего, что это? Где про него почитать?.


**********
У него чутка веб другой, как пример **********

11
onix007 @onix007
народ помогите пожалуйста как мне в етом скрипте вывести кто в эфире и как туда пихнуть накрутку слушателей в 7 раз !


?php
///////////////////////////////////////////////////
//icecast2 status refined v1.1 xsl refined
// Author: that dude over there at casterclub.com
// Bugs: post in the forums at casterclub
//////////////////////////////////////////////////
//start the madness already
//////////////////////////////////////////////////
//start the configurations
$ip = "78.46.15.217"; //your server address in the form of mydomain.com or 192.161.1.1
$port = "8000"; //the port of your server
$ice2_station = "RpgFm"; // your station or stream name






////////////////start the parsin action\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//opening socket
$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
if(!$fp) {
$success=2; //set if no connection



//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
User-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r
\r
"); //get status2.xsl
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
$mount = $numbers[0];
$connections = $numbers[1];
$stream_n = $numbers[2];
$listeners = $numbers[3];
$desc = $numbers[4];
$cur_song = $numbers[5];
$str_url = $numbers[6];
$client_info = $numbers[7];
$test1 = $numbers[8]; //set vars that where empty and still dont know what the heck those values are ;-)
$test2 = $numbers[9]; //set vars that where empty and still dont know what the heck those values are ;-)
$test3 = $numbers[10]; //set vars that where empty and still dont know what the heck those values are ;-)
$mount = $numbers[11];
$connections = $numbers[12];
$station =$numbers[13];
$listeners = $numbers[14];
$description = $numbers[15];
$cur_song = $numbers[16];
$www_url = $numbers[17];


//edit html to fit your stations site, this display is for online status
echo'


<fieldset><legend>Информация о радио</legend>
<html>
<head>
</head>
<body>
<font size=1><font color=white>Радиостанция:</font></font><font size=1> <font color=#0ee63b><b>Работает</b></font><div class=line></div><font color=white>Cлушает: </font><font color=white> - 3'.$listeners.' - </font><div class=line></div><font color=white>В эфире:</font> <font color=red><b>'.$connections.'</b></font> <div class=line></div><center><marquee scrolldelay=20 scrollamount=1 truespeed width=100%><font color=#00FF00 style=font-size:11px;font-family: tahoma;><b><font color=#fff></font></b></font></marquee></font></center>
</body>
</html>
<center><marquee scrolldelay=20 scrollamount=1 truespeed width=100%><font color=#00FF00 style=font-size:11px;font-family: tahoma;><b><font color=white>'.$cur_song.'</font></b></font></marquee></center>
';
}


?>