Так что я занят на этом сайте, и на нем нужно радио. Они используют сервер Icecast, поэтому я получил статус Icecast из Интернета:
<?php
$icecast_url='http://178.32.13.195:8002';
$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>
';
echo 'm3u: <a href="'.$pount_m3u.'">'.$pount_m3u.'</a>
';
echo 'listners_count: <b>'.$point_listners_count.'</b>
';
echo 'point_current_song: <b>'. $point_current_song.'</b>';
}
?>
Но это не работает. Это просто показывает пустую страницу. Кто-нибудь из вас знает, что не так?
Спасибо
Они используют Icecast 2.4.0, который получил переработанный интерфейс администратора, и это нарушает ваш код анализа.
Пожалуйста, не пытайтесь анализировать html, он будет зависать при каждом обновлении Icecast и изменении HTML.
Вместо этого вы можете попробовать недавно введенный status-json.xsl, то есть для этого сервера он расположен здесь: http://178.32.13.195:8002/status-json.xsl
Обратите внимание, к сожалению, из-за ошибки в json xslt это недопустимый JSON. Эта проблема исправлена в Icecast 2.4.1, поэтому, если у вас есть доступ к серверу, вы можете обновить его до Icecast 2.4.1 в ближайшее время (он будет доступен, вероятно, через несколько недель). Если у вас нет доступа к серверу, вы мало что можете сделать, но разбор HTML — это худший из возможных методов.
Других решений пока нет …