751

Re: Скрипты для Icecast

Да понимаю, или же я дам пароль на айскаст  и ссылка заиграет но айскаст должен и у меня работать или я запутался как лучше сделать кто подскажет чтобы ночью радио работало с дальнего востока но все сайты имеющие мой ссылку работали и ночью. Или же это сделать невозможно?!

752

Re: Скрипты для Icecast

создай mount для те хкто будет конектится из далека, настрой обратку, тут инфы много и конечно, держи свой сервак включённым.
К примеру у меня все спокойно играют на моём радио.

Отредактировано fyflo (21-06-2013 21:18:45)

http://i.imgur.com/F1sFlfO.pnghttp://i.imgur.com/lZfJzrX.png

753

Re: Скрипты для Icecast

всем привет! я забросил своё радио но осталось немного скриптов на компе. я смотрю что многие ищут скрипт mod_icecast доработанный tarasian666 который я выкладывал. я нашёл этот скрипт в компе но не уверен в том что это доработанный скрипт. возможно это изначальная версия мода. попробую скинуть а там уж разгребайте wink ))))

И да поможет мне F1,
И да сохранит меня F6,
Во имя Ctr'а, Alt'a и святого Delit'а.
Enter...

754

Re: Скрипты для Icecast

кому скинуть скрипт чтобы он смог  его тут выложить? просто некуда залить его(((

И да поможет мне F1,
И да сохранит меня F6,
Во имя Ctr'а, Alt'a и святого Delit'а.
Enter...

755

Re: Скрипты для Icecast

залил на яндекс диск mod_icecast . кто нибудь для удобства  перезалейте к себе и выложите тут. кстати этот мод для Joomla 1.5 пробуйте ковыряйте а я опять исчезаю на не определённое время)))

Отредактировано Sergei (22-06-2013 10:45:35)

И да поможет мне F1,
И да сохранит меня F6,
Во имя Ctr'а, Alt'a и святого Delit'а.
Enter...

756

Re: Скрипты для Icecast

Здравствуйте.
Использовал я под свои нужды этот код:

пишет 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)

757

Re: Скрипты для Icecast

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)

758

Re: Скрипты для Icecast

попробуй убрать -  \n

Ай спасибо.Целое утро ломал голову, в чем проблема. Убрал - заработало.
Респект!
А код их status.xsl действительно спрессован )

Блин, а что же делать с такими? - http://109.120.144.213:8000/status.xsl
Это сервер вКонтакте...

Отредактировано Dr.And (03-08-2013 15:04:18)

759

Re: Скрипты для Icecast

так нечего парсить

Could not parse XSLT file
http://i.imgur.com/F1sFlfO.pnghttp://i.imgur.com/lZfJzrX.png

760

Re: Скрипты для Icecast

пишет fyflo:

так нечего парсить

Could not parse XSLT file

Уже решил проблему другим путем.
А парсить все равно буду! Не этот файл - так другой... )))

761

Re: Скрипты для Icecast

При попытке вывести Описание потока выходит пустая строчка, помогите sad

<?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>
';
}
?>

762

Re: Скрипты для Icecast

посмотрите свой status2.xsl и проверьте на каком месте стоит description (не именно слово, а описание)

763

Re: Скрипты для Icecast

пишет 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)

764

Re: Скрипты для Icecast

пишет 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
Там есть данные количества слушателей на каждую станцию, каждый поток и суммарно.

Если что - обращайтесь )

765

Re: Скрипты для Icecast

Доброе время суток.

При попытке вывести:

  <?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 \>";
}

?>

Пишет: "Нет потока".
Хотя поток есть. С другим радио работает идеально, а с моим нет.

766

Re: Скрипты для Icecast

а если так

if (preg_match('#<td>Current Song\:<\/td>\n<td class=\"streamdata\">(.*)<\/td>#Ui',$fl,$m)) {

767

Re: Скрипты для Icecast

пишет tarasian666:

а если так

if (preg_match('#<td>Current Song\:<\/td>\n<td class=\"streamdata\">(.*)<\/td>#Ui',$fl,$m)) {

Огромное спасибо, всё работает :3

Отредактировано zim0vik (25-11-2013 19:40:13)

Re: Скрипты для Icecast

Всем привет)
нужен скриптик который выводил бы последние 20 треков на хтмд страничку.
заделитесь плз

769

Re: Скрипты для Icecast

Я понимаю, что тема заезжена уже, но все таки:
Скиньте кто нибудь пример парсинга с моей странички.
http://91.205.217.104:8001/status.xsl?mount=/freedom
а то пытаюсь уже фиг знает сколько и не получается.
Буду очень благодарен!

770

Re: Скрипты для Icecast

пишет 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)

771

Re: Скрипты для Icecast

Подскажите в чем косяк читает только 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;
?>

772

Re: Скрипты для Icecast

<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;
?>

773

Re: Скрипты для Icecast

пишет 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)

774

Re: Скрипты для Icecast

Если icecast свой то почему не получить напрямую, Делаем xsl

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output omit-xml-declaration="yes" method="text" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="no" encoding="UTF-8" /><xsl:strip-space elements="*"/>
<xsl:template match = "/icestats" >
     <xsl:value-of select="listeners" />
  </xsl:template>
</xsl:stylesheet>

Помещаем его в webroot icecast-а и натравливаем на него file_get_contents, проще некуда.

775

Re: Скрипты для Icecast

пишет djgelius:

пишет 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 не считает вообще!

значит смотреть все эти xspf и искать различия, возможно надо сделать более умный парсер, а не просто счет по строкам и столбцам