metadata flusso streaming

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Salve,
uso questo script per estrarre i metadata (artista-titolo) da un un flusso streaming audio, però quando mi stampa a video l dati mi inserisci pure all'inizio il testo "STRING (43)" il numero indicato varia per ogni brano.
Come posso eliminare questo testo inutile?
Grazie
Codice:
    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 = [
            'http' => [
                '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
            throw new Exception("Unable to open stream [{$streamingUrl}]");
    }

    var_dump(getMp3StreamTitle('flusso', 19200));

    echo "\n\n";
 
@djjunior

Quando posti codice PHP devi usare i tag [PHP]........[/PHP]non il tag [CODE].......[/CODE]
 
Ultima modifica:

Discussioni simili