Скрипт виведення назви треку Icecast з автооновленням

Увага! Автооновлення назви треку, зроблене описаним способом, створює неабияке навантаження на сервер.

Цей невеликий матеріал, як і інші розділи, присвяченому онлайн радіомовленню, був написаний після того, як я кілька днів витратив на пошук того, що мені було потрібно. А шукав я скрипт, що дозволяє не тільки виводити назву поточного треку з мого радіопотоку, що транслюється через Icecast2, але й автоматично змінювати цю інформацію без перезавантаження всієї сторінки раз на кілька секунд. Знайти рішення таки вдалося. Ділюся цим варіантом, щоб Ви не шукали його довго та нудно.

Для виведення поточної музичної композиції (у форматі «Виконавець - Назва пісні ») на просторах мережі я знайшов такий код:

$fl = file_get_contents('http://188.120.243.2:8000/status.xsl?mount=/enigma'); 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); > $song = antara($fl, "Current Song:\n",""); echo "",$song; ?>

Цей код відмінно виводить назву треку, а якщо його обернути на div, то ще й оформити можна як хочеться. Але інформація виводиться цим скриптом лише в момент перезавантаження, а потім не оновлюється. Тобто, запустив радіо з треком Enigma - Gravity Of Love і так воно і відображатиметься доти, доки вручну не оновиш сторінку.

Подумавши, я дійшов висновку, що мені потрібен якийсь скрипт, що містить весь попередній код для виведення назви треку всередину себе і регулярно оновлює цей вміст. Ось тут я знайшов триваріанти таких скриптів. Один із них чомусь почав регулярно перезавантажувати всю сторінку, другий відмовився працювати, лише третій показав потрібний мені результат - став оновлювати назву треку через зазначений проміжок часу, при цьому не перезавантажуючи всю сторінку. . Ось код цього третього скрипта, що працює на аяксі:

Тут те, що треба оновлювати

Ці два фрагменти коду об'єднуємо наступним чином:

$fl = file_get_contents('http://188.120.243.2:8000/status.xsl?mount=/enigma'); 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); > $song = antara($fl, "Current Song:\n",""); echo "",$song; ?>

Про всяк випадок додам, що для оформлення назви треку (виду, розміру, кольору шрифту) можна використовувати#timeA у файлі стилів сайту. Також можна прописати стилі безпосередньо в блоці div: наприклад,

Додам, що цей код у мене добре працює з моїми власними радіостанціями наIcecast 2.3.2. Для інших версій цієї серверної програми потрібно змінювати код.