Извлечение названия песен из радиопотока на PHP
От: Uglion  
Дата: 04.08.15 09:31
Оценка:
Здравствуйте. Есть у меня скрипт на пхп, извекающий названия песен из радиопотока. Выглядит он так:

<?php
function getMp3StreamTitle($streamingUrl, $interval, $offset = 0, $headers = true)
        {
        $needle = 'StreamTitle=';
        $ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36';
        $opts = array(
                'http' => array(
                        'method' => 'GET',
                        'header' => 'Icy-MetaData: 1',
                        'user_agent' => $ua
                )
        );
        
        if (($headers = get_headers($streamingUrl)))
        foreach($headers as $h)
        if (strpos(strtolower($h) , 'icy-metaint') !== false && ($interval = explode(':', $h) [1])) break;
        $context = stream_context_create($opts);
        if ($stream = fopen($streamingUrl, 'r', false, $context))
                {
                $buffer = stream_get_contents($stream, $interval, $offset);
                fclose($stream);
                if (strpos($buffer, $needle) !== false)
                        {
                        $title = explode($needle, $buffer) [1]; 
                        return substr($title, 1, strpos($title, ';') - 2);
                        }
                  else return getMp3StreamTitle($streamingUrl, $interval, $offset + $interval, false);
                }
          else return '';
        }        
$url = $_REQUEST['url'];
echo getMp3StreamTitle($url, 19200);
?>


Этот код работает, но не на всех радиостанциях. Например, здесь всё работает конкретно. Ссылка на радиопоток выглядит в этом случае так: http://s.djstation.ru/stream192. А, например вот такая ссылка уже не работает: http://online.uniton.ru:8800/;online
Для таких случаев я использую урезанную версию проигрывателя, без названий песен. Но винамп корректно извлекает названия из любых радиостанций. Видимо, можно как-то доработать код до более результативной работы. Не тыкните носом в какую сторону копать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.