Здравствуйте, хочу поделиться с Вами скриптом для вытягивания статистики из Icecast2, с автообновлением, без php, Только на JavaScript'e.
Первым, что нужно сделать это создать новый файл статистики в icecast2.
У меня они лежат:
cd /usr/share/icecast2/
создать файл info.xsl (touch info.xsl)
в него добавить сл:
- Код: выделить все
К сожалению плохо вставил код, берите с архива файл
Для выхода с ви -> cntrl+x ->Y->enter
Это мы сделали валидный Json.
Проверить как он работает можно: server.com:8000/info.xsl
Если выводить данные, то все ок. На сервере айскаста все закончили.
Дальше, на сервере сайта, создаем папку, назовем ее к примеру "tracks".
Создаем файл, к примеру: jquery-icecast.js
в нем вписываем код:
- Код: выделить все
var mountpoint = "/65";
var url = "server.com:8000/info.xsl?";
url+= "mount=" + mountpoint + "&callback=";
function parseMusic(results)
{
// #id >> data
var nm = results[mountpoint];
$('#artist').text(nm["artist"]);
$('#title').text(nm["title"]);
$('#total').text(nm["total"]);
$('#genre').text(nm["genre"]);
}
var span;
var script;
$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});
function initMusic()
{
span = document.createElement("span");
span.id="getscript";
document.body.appendChild(span);
script = document.createElement("script");
script.type="text/javascript";
script.charset="UTF-8";
}
function addMusic()
{
$('#getscript').empty();
script.src = url;
$('#getscript').append(script);
}
function updateMusic()
{
addMusic();
}
$(document).ready(
function () {
initMusic();
addMusic();
setInterval('updateMusic()', 3000 );
});
В переменной mountpoint (первая строка), в кавычках должно быть название вашей точки (в моем примере это "/65")
Дальше в 3 строке, где "var url="", вы должны вписать путь к файлу новосозданной статистики. к примеру "server.com:8000/info.xsl" и в конце добавить знак вопроса, что бы вышло так: "server.com:8000/info.xsl?"
Далее мы видим, что у нас доступна такая информация (если смотреть ниже по коду:
artist
title
total
genre
Если добавить еще строку
$('#description').text(nm["description"]);
то мы получим доступ к описанию нашей станции (которую указывали в конфиге айса)
и т.д.. (все доступные поля описаные в файле info.xsl, я надеюсь вы поняли логику).
Теперь нам нужно вывести всю доступную информацию.
СОздаем в той же папки что и "jquery-icecast.js"
к примеру tracks.html
Там должно быть сл. код:
- Код: выделить все
К Сожалению плохо вставил код, берите с архива файл
Обратим внимание на спан"ы. Id спан"а, должно совпадать с тем, что мы писали в jquery-icecast.js
Т.е. если мы добавили description в jquery-icecast.js, то для того что бы вывести description нужно добавить span с id="description". Ну вот и все. Можно размещать хоть на narod.ru. Никакой php обработки сервером.
А теперь извините, если что-то непонятно. Времени не много, но хотел с Вами поделиться. (Как настроить icecast2 сервер и трансляцию с SE2 на icecast2 есть в документации).
Добавил еще архивчик, в котором есть все 3 описанных файла.
http://blysk.com.ua/tracks.rar