Re: Скрипты для Icecast
какой именно кинте сюда
Первый русскоязычный форум посвященный интернет-радиовещанию
Страницы Назад 1 … 26 27 28 29 30 … 33 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
какой именно кинте сюда
пишет onix007:
какой именно кинте сюда
Ну неужели так было тяжело прочитать всю страницу обсуждения?!!! Тебе сказали, на предыдущей странице
http://radiotalk.ru/viewtopic.php?pid=36041#p36041
Нужен был список маунтов с внешнего 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'] - текущий трек.
Может кому пригодится.
Отредактировано dimajak (13-04-2012 19:30:04)
пишет 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 не подойдет.
пишет KyPIIaToB:
Забыл сказать, что он сделан под стандартный веб айса, под KH не подойдет.
Про KH не знаю совсем ничего, что это? Где про него почитать?
Скрипт написал после неудачной попытки получить пароль релея, чтобы вручную не править свой список маунтов при изменении списка маунтов у внешнего Icecast сервера (>50).
Почему-то для админов Icecast пароль релея такая же тайна. как и админский.
Для себя добавил еще одну функцию, которая создает текстовик с маунтами и релеями, содержимым которого заменяю блок маунтов этого Icecast сервера.
Если кого-то заинтересует, предоставлю полный текст скрипта.
Отредактировано dimajak (13-04-2012 22:51:36)
пишет dimajak:
пишет KyPIIaToB:
Забыл сказать, что он сделан под стандартный веб айса, под KH не подойдет.
Про KH не знаю совсем ничего, что это? Где про него почитать?.
http://www.xiphicecast.webspace.virginmedia.com/
У него чутка веб другой, как пример http://radio.kazantip-fm.ru:8000/status2.xsl
народ помогите пожалуйста как мне в етом скрипте вывести кто в эфире и как туда пихнуть накрутку слушателей в 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>
';
}
?>
кто в эфире - если прописано в stream title (name) то здесь $stream_n
если прописано в description то здесь $desc
накрутка ? зачем ? но если так то просто умножить $listeners на 7
Привет всем!
Использую скрипт по выводу 10 проигравших песен.
Но есть проблема как сделать так чтобы когда проиграли 10 песен, 11 появлялась в этом списке а 1 убиралась.
tarasian666/ Да но я ласт фм не подключал.
пишет Jon-coool:
Да но я ласт фм не подключал.
Тот виджет без скробблинга на ласт работать не будет. И да, он так и выводит - 1-й трек исчезает, 11-й появляется.
Нет он выводит 10 потом заново с первого
ну и как он тогда может выводить если last.fm не подключен ?
пишет Jon-coool:
Нет он выводит 10 потом заново с первого
Подозреваю что это скрипт который постил здесь Metra, это он так выводит. Но тот скрипт в Last.fm не нуждается и пишет треки в MySQL.
А как исправить знает кто?
Или дайте тот скрипт который с ласт фм.
Тольок с инструкцией если можно.
Отредактировано Jon-coool (22-04-2012 14:59:52)
Всем привет.
Интересует как сделать автообновление скрипта.
<?php
$data = file_get_contents('http://**********/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('http://localhost: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: 15px; font-family:Trebuchet MS, Tahoma, Arial, sans-serif; color:#3090c3"><b>Название радио:</b> '.$title.' <br>
<b>За пультом:</b> '.$description.' <br>
<b>Битрейт:</b> '.$Bitrate.' <br>
<b>Сейчас в эфире:<br /></b> '.$Current_song.' <br>
<br>
<center><input type="button" value="Слушать радио в плеере" onclick="location.href=\'http://************/live.m3u\'" /></center>';
?>
Скрипты выводится на DLE. В блоке с помощью инклуда
Отредактировано rattlesneyk (24-04-2012 16:02:16)
пишет rattlesneyk:
Всем привет.
Интересует как сделать автообновление скрипта.Скрипты выводится на DLE. В блоке с помощью инклуда
Можно с помощью AJAX, в этой теме есть пример. Но это решение не очень хорошее так как может генерировать слишком много запросов к веб-серверу и с каждым разом выполнять php.
Как по мне, так проще использовать обычный мета
<META HTTP-EQUIV="REFRESH" CONTENT="30">
пишет KyPIIaToB:
Как по мне, так проще использовать обычный мета
<META HTTP-EQUIV="REFRESH" CONTENT="30">
Конечно проще. Но сути не меняет. Открыли 20 чел. страницу на весь день - и оно рефрешит каждые 3 сек. дергая php-скрипт у всех этих 20-ти чел., а скрипт в свою очередь, долбит запросами Icecast.
Если посещаемость маленькая и ограничений в ресурсах особых нет, то можно конечно хоть аяксом хоть мета рефреш.
можно отправлять в сон скрипт что генерирует статистику в файл, но сколько он "проживет" зависит от нескольких факторов )
или же после чтоб сна он запускал сам себя, а время сна = время трека
у меня скрипт на php дергает каждые 3 сек. крон, скрипт проверяет если трек сменился то пишет его в статический файл, с файла потом беру аяксом, в том же числе можно кроссдоменно с помощью jsonp
насколько я знаю крон может дергать раз в минуту, не чаще
или в кроне куча записей по типу
sleep 3 && sript.php
sleep 6 && script.php
и тд
?
Страницы Назад 1 … 26 27 28 29 30 … 33 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться