Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Запросы скриптов для PtokaX _ Скрипт для icecast

Автор: belradio 28.5.2010, 12:13

Радио скрипт для сервера icecast.

Через заданный интервал выводит информацию о кол-ве слушателей, играющем треке и ссылка на радио

v1.0

 Icecast2_XSL_Parser_by_Nickolya.lua ( 4.28 килобайт ) : 273
 

Автор: HackFresse 28.5.2010, 19:05

Тоже хотелось бы такую игрушку, чтобы по менюшке и через промежуток времени писала в чат инфу о радиостанциях... но в луа разобраться нету времени.. =(
Но вот сочинил небольшой код на пхп, вдруг регулярка пригодится (писать одной строкой)

Раскрывающийся текст
Код
<?php
$icecast_url='http://10.10.0.1:8000';

$output = file_get_contents($icecast_url);

$search='#<div class="newscontent">.*?Point /(.*?)<.*?href="(.*?)">M3U<.*?Listeners.*?class="streamdata">(.*?)<.*?Song:.*?class="streamdata">(.*?)<.*?</div>#si';
preg_match_all($search, $output, $matches);

$j=count($matches[0]);
for ($i=0;$i<$j; $i++) {

    $point_name=$matches[1][$i];
    $pount_m3u=$icecast_url.$matches[2][$i];
    $point_listners_count=$matches[3][$i];
    $point_current_song=$matches[4][$i];
//
    echo 'mount point: <b>'.$point_name.'</b><br>';
    echo 'm3u: <a href="'.$pount_m3u.'">'.$pount_m3u.'</a><br>';
    echo 'listners_count: <b>'.$point_listners_count.'</b><br>';
    echo 'point_current_song: <b>'. $point_current_song.'</b><br><br><br>';
}
?>
Показывает только название точки, ссылку на неё, количество слушающих сейчас и название песни.

Названия песни может отсутствовать (если слушателей нету и трансляция радио только по запросу, или просто не транслируется), + есть нюансы с кодировкой ( в зависимости от настройки icecast).

Автор: belradio 29.5.2010, 11:40

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

Автор: Nickolya 29.5.2010, 12:19

Конкретно под эту систему нету, было для SHOUTcast http://mydc.ru/topic113.html и http://mydc.ru/topic3076.html. Если дадите ссылку конкретно на страницу работающего плеера - подскажем как сделать. Либо в архиве приложите сохраненную старницу. И еще какой апи?

Автор: belradio 30.5.2010, 12:02

вообщем задача такая!
Для API2 сделать парсер с этой страницы:
http://mydc.ru/r/?http://94.232.9.212:8000/status2.xsl?mount=/nonstop

в настройках:

ip = "94.232.9.212"
port = "8000"
mount = "nonstop"

вот пример парсинга на пхп:

Код
fputs($fp,"GET /status2.xsl?mount=/$serverpoint 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

$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];
$listfake = $listeners + $random;

Автор: Nickolya 30.5.2010, 23:37

В пхп коде разбираться не охота, но такую страницу пропарсить - плевое дело. Вот пример кода который выдает в чат с заданными интервалом информацию о станции в виде

Цитата
<PtokaX> *** 0 человек сейчас слушают на BelRadio [ http://mydc.ru/r/?http://94.232.9.212:8000/nonstop.m3u ] - Alesha Dixon - The Boy Does Nothing


Учел возможность данных в утф и еще кое-какие приятные мелочи, смотрите в настройках big_smile.gif Для работы понадобится http://mydc.ru/topic43.html.

Сейчас заметил что количество слушателей не показыватся, поэтому это можно опустить заменив
Код
Core.SendToAll(sBot..""..iListeners.." человек сейчас слушают на "..sServer.." [ "..sSendUrl.." ] "..sWeListen)
на
Код
Core.SendToAll(sBot.."На "..sServer.." [ "..sSendUrl.." ] сейчас играет: "..sWeListen)


И еще вижу что русские буквы выводятся в непоймикакой кодировке... :( Скрипт выводит их как нижнее подчеркивание.

У вас там вывод идет в CP1252 вместо CP1251, хотя вообще должно быть в утф, с этой кодировкой мы вообще не работали, может кто скажет как перевести средствами скрипта по аналогии с http://mydc.ru/index.html?showtopic=334&view=findpost&p=2276? Вот таблицы кодировок: http://mydc.ru/r/?http://www.sci.kz/~sairan/kazcode/Table2.html и http://mydc.ru/r/?http://www.sci.kz/~sairan/kazcode/Table5.html. Или может собрать iconv под птоку?


 Icecast2_XSL_Parser_by_Nickolya.lua ( 4.28 килобайт ) : 72
 

Автор: belradio 1.6.2010, 18:23

можно ли добавить меню - для админов
а там кнопки показать слушателей и прочее?

Автор: Nickolya 2.6.2010, 12:27

А... В принципе можно сделать команду вывода того что выводится по таймеру. Не более, для остального просто нет информации. Как будет возможность - добавлю.

Автор: Nickolya 6.6.2010, 14:42

Выкладываю, пусть чуть позже чем обещал, скрипт с дополнением - командой для отсылки информации по запросу.

 Icecast2_XSL_Parser_by_Nickolya.lua ( 6.49 килобайт ) : 69
 

Автор: belradio 14.6.2010, 16:15

отлично! можешь эту команду прикрепить к меню - кнопкой
и еще параметр в конфиге кому показывать эту инфу (оп, мастер и т.д)
и так же сделать вывод информации в личку или в чат

п.с. и еще возможность отключения автоматического отправления в чат

Автор: Nickolya 17.6.2010, 19:45

Обновил скрипт по запросу выше, теперь

CODE
----------------------------------------------------------------------------------------------------
-- Конфиг скрипта:
----------------------------------------------------------------------------------------------------

-- Таймаут подключения к серверу (время на ожидание),
-- столько может висеть скрипт при запросе баланса, в секундах:
iScriptTimeout = 1

-- Отсылать ли в чат информацию по таймеру:
bSendDataOnTimer = true

-- Интервал для отправки сообщений о сервере в чат, в секундах:
iTimerInterval = 30

-- Отправлять ли в чат сообщения если получить информацию не удалось:
bSendBadMsg = false

-- Наша страница в UTF-8:
bUTF = true

-- Параметры подключения:
ip = "94.232.9.212"
port = "8000"
mount = "nonstop"

-- Команда для вывода в чат сообщения:
sSendCmd = "showradio"

-- Путь в меню для команды:
sMenuWay = "Показать информацию о радио"

-- Кому разрешено пользоваться командой:
tAllowCmd = {
[0] = true,
[1] = true,
[2] = true,
[3] = true,
[-1] = false,
}

-- Посылать информацию в ЛС (true) или чат (false):
bSendOnCmdToPm = false


 Icecast2_XSL_Parser_by_Nickolya.lua ( 7.46 килобайт ) : 138
 

Автор: kirk 7.8.2012, 7:20

Добрый день, уважаемые.
Установил скрипт HackFresse.
Кое что поправил, все работает. Есть только 1 "но": не обновляется инфа.
Делаешь рефрешь - все показывает.
На странице сервера и в плейере все показывается. То есть проблема не в выдаче инфы.

Прошу помочь, ибо полный профан в данном вопросе(поправлял элементарные вещи, для которых не знания нужны, а просто голова)

Автор: aleksei1122 3.12.2012, 13:53

может кто подскажет,как вытащить общую статистику по количеству слушающих,а не отдельно по точкам.

Автор: RoL 8.12.2013, 17:07

Скажите как устронить эту проблему http://mydc.ru/r/?http://f3.s.qip.ru/17hKVg80N.png ?? Дело в том что ввеблоги магнет сылка отоброжаеться не правильно