Re: Скрипты для Icecast
Вопрос, как сделать вещание из другого города моей станции через мой постоянный айпи но с другого города
Первый русскоязычный форум посвященный интернет-радиовещанию
Страницы Назад 1 … 29 30 31 32 33 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Вопрос, как сделать вещание из другого города моей станции через мой постоянный айпи но с другого города
с другого города подключиться к вашему icecast используя ваш ip
Да понимаю, или же я дам пароль на айскаст и ссылка заиграет но айскаст должен и у меня работать или я запутался как лучше сделать кто подскажет чтобы ночью радио работало с дальнего востока но все сайты имеющие мой ссылку работали и ночью. Или же это сделать невозможно?!
всем привет! я забросил своё радио но осталось немного скриптов на компе. я смотрю что многие ищут скрипт mod_icecast доработанный tarasian666 который я выкладывал. я нашёл этот скрипт в компе но не уверен в том что это доработанный скрипт. возможно это изначальная версия мода. попробую скинуть а там уж разгребайте ))))
кому скинуть скрипт чтобы он смог его тут выложить? просто некуда залить его(((
залил на яндекс диск mod_icecast . кто нибудь для удобства перезалейте к себе и выложите тут. кстати этот мод для Joomla 1.5 пробуйте ковыряйте а я опять исчезаю на не определённое время)))
Отредактировано Sergei (22-06-2013 10:45:35)
Здравствуйте.
Использовал я под свои нужды этот код:
пишет aleksanders:
Короче, если что не так, вы хоть не смейтесь. ))) Главное работает...
<?php $data = file_get_contents('хттп://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('хттп://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.''; ?>
За ненадобностью выбросил лишнее (может и не корректно...) и получилось вот что:
<?php
$data = file_get_contents("хттп://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);
}
$Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
echo "Сейчас играет : ".$Current_song."";
?>
Все бы было хорошо, но не со всех серверов можно получить данные для $Current_song
Вот к примеру отсюда можно: хттп://radio.qip.ru:8000/status.xsl?mount=/Progosphera
А вот уже отсюда - нет: хттп://online.radiorecord.ru:8101/status.xsl?mount=/rr_128
Видать во втором варианте есть некая специфика, так как : Version - Icecast 2.3.3-kh5
Помогите пожалуйста советом, кто в этом разбирается.
И не судите строго, я вот только начал во всем этом разбираться...
Отредактировано Dr.And (03-08-2013 14:40:48)
online.radiorecord.ru:8101/status.xsl?mount=/rr_128
версия айса не причем .. вывод везде одинаков и банален. Там, умником переписан код (без пробелов и переносов) и твой парсер его не может правильно прочитать ... твой парсер под стандартный код стат. ...
Current Song:</td><td class="streamdata">MODANA/CARLPRIT - Your Biggest Fan (Record Mix)</td>
Current Song:</td>\n<td class=\"streamdata\">
попробуй убрать - /n
в коде ста. рекорда нет переброса строки. /n
Отредактировано VapSite (03-08-2013 14:53:21)
попробуй убрать - \n
Ай спасибо.Целое утро ломал голову, в чем проблема. Убрал - заработало.
Респект!
А код их status.xsl действительно спрессован )
Блин, а что же делать с такими? - http://109.120.144.213:8000/status.xsl
Это сервер вКонтакте...
Отредактировано Dr.And (03-08-2013 15:04:18)
пишет fyflo:
так нечего парсить
Could not parse XSLT file
Уже решил проблему другим путем.
А парсить все равно буду! Не этот файл - так другой... )))
При попытке вывести Описание потока выходит пустая строчка, помогите
<?php
echo "<meta http-equiv='refresh' content='10'>";
$ip = "localhost";
$port = "8000";
$ice2_station = "Сервер вещания:";
$page = "";
$fp = @fsockopen("$ip", $port, $errno, $errstr, 10);
$success=-999;
if(!$fp) {
$success=2;
//Если сервер вещания не запущен
echo'
<tr>
<td align="center" width="100%" colspan="2"><b>
<font face="Arial" size="3" style="font-size: 9pt; ">
<span style="color: rgb(255, 255, 255);">
Эфир <br> временно отключен!</b></td>
</tr>
';
}
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"); //get status2.xsl
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
fclose($fp); //close connection
$page = ereg_replace(".*<pre>", "", $page);
$page = ereg_replace("</pre>.*", ",", $page);
$numbers = explode(",",$page);
$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];
$mount = $numbers[11];
$connections = $numbers[12];
$station =$numbers[13];
$listeners = $numbers[14];
$description = $numbers[15];
$cur_song = $numbers[16];
$www_url = $numbers[17];
//Если сервер вещания запущен, но нет потока
if (strlen($mount)<2) echo
'
<tr>
<td align="center" width="100%"><b>
<font face="Arial" size="3" style="font-size: 9pt; ">
<span style="color: #6c6565;"><b>Статус эфира:</b></span> <span style="color: #ff0000;">Технические работы на сервере!</b></span></td>
</tr>
</tr>
<br><br>
<tr>
<td align="center" width="100%"><b>
<font face="Arial" size="3" style="font-size: 9pt; ">
<span style="color: #6c6565;"><b>Слушателей:</b> 0</b></span></td>
</tr>
';
//Если сервер вещания запущен и идёт поток
else echo
'
<tr>
<td align="center" width="100%"><b>
<font face="Arial" size="3" style="font-size: 9pt; ">
<span style="color: #6c6565;"><b>Эфир ведет:</b> '.$description.'</b></span></td>
</tr>
<br>
<tr>
<td align="center" width="100%"><b>
<font face="Arial" size="3" style="font-size: 9pt; ">
<span style="color: #6c6565;"><b>В эфире:</b> '.$cur_song.'</b></span></td>
</tr>
<br>
<tr>
<td align="center" width="100%"><b>
<font face="Arial" size="3" style="font-size: 9pt; ">
<span style="color: #6c6565;"><b>Слушателей:</b> '.$listeners.'</b></span></td>
</tr>
';
}
?>
посмотрите свой status2.xsl и проверьте на каком месте стоит description (не именно слово, а описание)
пишет tarasian666:
посмотрите свой status2.xsl и проверьте на каком месте стоит description (не именно слово, а описание)
Его там вообще нет "facepalm" Можно как то добавить?
<pre>
MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL Global,Client:2162 Source: ,,0,,
</pre>
Отредактировано NoExist (24-09-2013 23:02:08)
пишет Dr.And:
попробуй убрать - \n
Ай спасибо.Целое утро ломал голову, в чем проблема. Убрал - заработало.
Респект!
А код их status.xsl действительно спрессован )Блин, а что же делать с такими? - 109.120.144.213:8000/status.xsl
Это сервер вКонтакте...
Привет от Радио Рекорд -)
Наиболее удобно парсить текущий трек можно с JSON-файла: //www.radiorecord.ru/xml/record_online_v3.txt
Также, доступен стандартный //air.radiorecord.ru:8101/rr_128.xspf
В общем целом плане парсинга данных текущей станции с icecast - есть замечательнейший скрипт, находящийся по адресу: //code.google.com/p/icecast-now-playing-script/ - крайне советую обратить на него внимания.
И, спешу огорчить. Что в случае с Радио Рекорд у вас просто так не получится получить текущее количество слушателей. Дело в том, что по адресу //air.radiorecord.ru:8101 (кстати, online - устаревший домен) работает аж 3 сервера Icecast. Это работает RR-DNS балансировщик нагрузки (вы можете посмотреть как он работает, запустив ping air.radiorecord.ru - вы время от времени будете видеть разные IP-адреса). Поэтому получать данные возможно вручную обращаясь именно на IP: 78.140.251.[2-4]. Далее, суммируя количества получить правильные данные.
Сравнить ваши данные с нашей статистикой можно по адресу: //stat.radiorecord.ru/radiorecord.ru/air.radiorecord.ru/index.html#radio
Там есть данные количества слушателей на каждую станцию, каждый поток и суммарно.
Если что - обращайтесь )
Доброе время суток.
При попытке вывести:
<?php
$fl = file_get_contents('http://109.194.162.95:9300/');
if (preg_match('#<td>Current Song\:<\/td><td class=\"streamdata\">(.*)<\/td>#Ui',$fl,$m)) {
$song = $m[1];
echo "<b>Now playing:</b> {$song}<br \>";
} else {
echo "<b>Now playing:</b> Нет потока<br \>";
}
?>
Пишет: "Нет потока".
Хотя поток есть. С другим радио работает идеально, а с моим нет.
а если так
if (preg_match('#<td>Current Song\:<\/td>\n<td class=\"streamdata\">(.*)<\/td>#Ui',$fl,$m)) {
пишет tarasian666:
а если так
if (preg_match('#<td>Current Song\:<\/td>\n<td class=\"streamdata\">(.*)<\/td>#Ui',$fl,$m)) {
Огромное спасибо, всё работает :3
Отредактировано zim0vik (25-11-2013 19:40:13)
Всем привет)
нужен скриптик который выводил бы последние 20 треков на хтмд страничку.
заделитесь плз
Я понимаю, что тема заезжена уже, но все таки:
Скиньте кто нибудь пример парсинга с моей странички.
http://91.205.217.104:8001/status.xsl?mount=/freedom
а то пытаюсь уже фиг знает сколько и не получается.
Буду очень благодарен!
пишет tarasian666:
$mass берем по счету
0) 21/Jul/2010:19:04:41 +0400|
1) /live21|
2) 3|
3) лилия - ты и я (remix)
т.е. $mass[3] последняя проиграная песняПоказать / Cкрыть текст
отображает последних 20
немного измененный скрипт, учитывает плейлист для определенного потока, выдает последние 5 треков:
<?PHP
error_reporting(0);
$data = file("/usr/local/share/icecast/logs/playlist.log");
$track_count=0;
for($i=count($data)-2;$i>0;$i--){
$mass = explode("|",$data[$i]);
if ($mass[1] == '/play_64_aac'){
if ($track_count>0){
echo $mass[3]."<br>";
}
if ($track_count++==5) break;
}
}
?>
Отредактировано modi_1 (24-04-2014 02:22:36)
Подскажите в чем косяк читает только 1 мант
<meta http-equiv="refresh" content="60">
<?php
$xml[1] = simplexml_load_file("http://s1.edmradio.ru:8000/live.xspf");
$xml[2] = simplexml_load_file("http://s1.edmradio.ru:8000/play.xspf");
$xml[3] = simplexml_load_file("http://s1.edmradio.ru:8000/128.xspf");
$xml[4] = simplexml_load_file("http://s1.edmradio.ru:8000/64m.xspf");
$xml[5] = simplexml_load_file("http://s1.edmradio.ru:8000/48aac.xspf");
$xml[6] = simplexml_load_file("http://s1.edmradio.ru:8000/32aac.xspf");
//по необходимости увеличиваем
$kp=6; //количество потоков
$i=1;
$vsego=0;
while ($i <= $kp) {
$ano = $xml[$i]->trackList->track->annotation;
$mass=explode("\n", $ano);
$kol=substr($mass[4],19);
$i=$i+1;
$vsego=$vsego+$kol;
}
echo "<b>Всего слушает: </b>" .$vsego;
?>
<meta http-equiv="refresh" content="60">
<?php
$xml[1] = simplexml_load_file("http://s1.edmradio.ru:8000/live.xspf");
$xml[2] = simplexml_load_file("http://s1.edmradio.ru:8000/play.xspf");
$xml[3] = simplexml_load_file("http://s1.edmradio.ru:8000/128.xspf");
$xml[4] = simplexml_load_file("http://s1.edmradio.ru:8000/64m.xspf");
$xml[5] = simplexml_load_file("http://s1.edmradio.ru:8000/48aac.xspf");
$xml[6] = simplexml_load_file("http://s1.edmradio.ru:8000/32aac.xspf");
$vsego=0;
foreach ($xml as $m) {
$ano = $m->trackList->track->annotation;
$mass=explode("\n", $ano);
$vsego += substr($mass[3],19); /* у меня почему-то так: 0 - Stream Title, 1 - Stream Description, 2 - Content Type, 3 - Current Listeners, 4 - Peak Listeners, 5 - Stream Genre*/
}
echo "<b>Всего слушает: </b>" .$vsego;
?>
пишет tarasian666:
<meta http-equiv="refresh" content="60"> <?php $xml[1] = simplexml_load_file("http://s1.edmradio.ru:8000/live.xspf"); $xml[2] = simplexml_load_file("http://s1.edmradio.ru:8000/play.xspf"); $xml[3] = simplexml_load_file("http://s1.edmradio.ru:8000/128.xspf"); $xml[4] = simplexml_load_file("http://s1.edmradio.ru:8000/64m.xspf"); $xml[5] = simplexml_load_file("http://s1.edmradio.ru:8000/48aac.xspf"); $xml[6] = simplexml_load_file("http://s1.edmradio.ru:8000/32aac.xspf"); $vsego=0; foreach ($xml as $m) { $ano = $m->trackList->track->annotation; $mass=explode("\n", $ano); $vsego += substr($mass[3],19); /* у меня почему-то так: 0 - Stream Title, 1 - Stream Description, 2 - Content Type, 3 - Current Listeners, 4 - Peak Listeners, 5 - Stream Genre*/ } echo "<b>Всего слушает: </b>" .$vsego; ?>
Спасибо большое! заработало, но по вашему коду считает только mp3 поток а у меня еще есть и ААС, мой код работает с ААС
но как оказалось 128 и 64m не считает вообще!
Отредактировано djgelius (04-07-2014 12:38:23)
Страницы Назад 1 … 29 30 31 32 33 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться