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

Скрипт срочно

 

6245
Тарас @tarasian666
1. плейлист на модуле perl (или python)
2. см. п.1
3. если ices то см. п.1 + mysql
4. в программе для вещания ввести ip port mount пароль и вперед, а какой именно софт - выбирать вам, и они все с инструкцией, но часто на англ.

82
external @external
tarasian666 пишет:

см. п.1

где этот пункт 1 у вас на форуме как на свалке ничего не найдёшь

6245
Тарас @tarasian666
на форуме нет, есть в гугле. Тем более нужны познания perl или python
А свалка от пользователей которые пишут почти куда попало

82
external @external
Прописал в конфиге ices,

<Mountpoint>/stream1</Mountpoint>
<Name>Radio</Name>
<Source>/var/www/html/site/fm/media/intro.mp3</Source>

что бы при подключении к каналу проигрывался файл интро. Но почемуто не проигрывается правльно ли я прописал?

6245
Тарас @tarasian666
не там, надо в конфиге icecast

243
Владислав @VladokZzz
создал маунт на 1 сервере (SAM + icecast) и он вещает, затем пытаюсь добавить маунт на другом сервере, вбиваю ип, порт, маунт а encoder не хочет коннектиться, говорит ошибка (200) Что это а ошибка? пароль верный

6245
Тарас @tarasian666
зачем добавлять маунт на другом сервере?

82
external @external
я тоже этого понять не могу, 1 сервера мало?

243
Владислав @VladokZzz
а что бы сделать так:
основной сервер radio.ru:8128/live
к нему подтягиваются маунты с других источников:
radio.ru:8128/live2
radio.ru:8128/live3 и т.д.
это все можно сделать с помощью relay но между релаями фоллбэк настроить не удается. а между маунтами фоллбэк работает на ура

6245
Тарас @tarasian666
зачем relay ? пусть сразу будут все маунты на основном

144
Руся @Ruskat
tarasian666, Благодарю за подсказку. С твоей помощью родился такой вот скрипт:
$data = file_get_contents('http://4m.net.ua:8000/status.xsl?mount=/ZED-FM');
$data2 = file_get_contents('http://4m.net.ua:8000/status.xsl?mount=/ruskat');
$data3 = file_get_contents('http://62.149.27.186:8000/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);
}
$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, "Stream Genre:</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>");
//========якщо маунтів декілька============//
$Current_listeners2 = antara($data2, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
$Peak_listeners2 = antara($data2, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
//-----------------//
$data3_curr_listeners = antara($data2, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
$data3_peak_listeners = antara($data2, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
//======сумуємо в загальну кількість слухачів та піки=======//
$Curr_listens=$Current_listeners2+$Current_listeners+$data3_curr_listeners;
$Peak_listens=$Peak_listeners2+$Peak_listeners+$data3_peak_listeners;

$staylst=$Curr_listens+1;
echo ''.$title.' <br> '.$description.' <br> '.$content_type.' <br> '.$Mount_started.' <br> '.$Bitrate.' <br> '.$Curr_listens.' <br> '.$Peak_listens.' <br> '.$Stream_genre.' <br> '.$Stream_url.' <br> '.$Current_song.' <br><br>Слухачі по маунтам <br>
Маунт-1: зараз '.$Current_listeners.', всього '.$Peak_listeners.'.<br>
Маунт-2: зараз '.$Current_listeners2.', всього '.$Peak_listeners2.'.<br>
Маунт-3: зараз '.$data3_curr_listeners.', всього '.$data3_peak_listeners.'.<br>
';

А как еще бы реализовать, вывод АЙПИ июзер-агента?

6245
Тарас @tarasian666
Ruskat молодець, всі б так ))


насчет ip - надо парсить admin/listclients.xsl?mount=/{mount}
доступ на страницу как на ftp - логин:пароль@ip:port

144
Руся @Ruskat
tarasian666? а именно **********
Каким кодом выводить список юзер-агентов, а не один, и список всех активных маунтов в айсе?

6245
Тарас @tarasian666
список юзер-агентов и так выводится таблицой,
список всех маунтов - listmounts.xsl

144
Руся @Ruskat
tarasian666, немножко по другому...
$data = file_get_contents('http://логин:пароль@сервер:8000/admin/listclients.xsl?mount=/ZED-FM');

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);
}
$data = iconv("utf-8", "cp1251", $data);
$data = antara($data, "<table border=\"0\" cellpadding=\"1\" cellspacing=\"5\" bgcolor=\"444444\"><tr><td align=\"center\">","</tr>\n</table>");
//$data = substr_replace (Action, "5", $data);
$data=preg_replace('|<a[^>]+>([^<]+)</a>|ism',' ',$data);

echo ''.$data.'
';

С обрезанием ссылок. Тока вот не могу ячейку Action удалить.
Как мона сделать вывод страниц, типа как тут ********** ?

6245
Тарас @tarasian666
поколупать веб странички icecast и продумать парсинг

14
sassaraev @sassaraev
Ruskat? Спасибо скрипт просто класс работает как нужно! Я ещё под себя настроил! :)

144
Руся @Ruskat
tarasian666, а как поставить условие, что если сервер или несколько не работают по тех-причинам, то выдавало бы из того, что работает, или же в низу чтобы выводить надпись, что сервер ******* не работает?

221
Дмитрий @ElectroNik
tarasian666 пишет:

<?PHP
$data = file_get_contents("http:/ip:port/status2.xsl?mount=/ваш_маунт");
$mass = explode(",",$data);
$title = $mass[16];
$listeners = $mass[14];
echo "сейчас играет: ".$title." слушают: ".$listeners;
?>


Привет, подскажи как скриптом можно вывести общее кол-во слушателей по нескольким каналам, которые находятся на разных серверах

144
Руся @Ruskat
ElectroNik, в посте #51 изображено именно то, что тебе нужно. Даже общий подсчёт слушателей прилагается :)