Daten aus Internet-Radio-Stream

Hallo Leute,

seit Tagen suchen ich immer mal wieder nach einer Möglichkeit, die Daten (Titel, Künstler, Cover etc.) aus inem Internet-Radiostream zu bekommen.
Entweder ist das so trivial dass man das nicht beschreiben muss, es geht nicht so einfach oder ich verwende die falschen Suchbegriffe…:confused:
Hat da jemand enen Tipp für mich?
Als Bipiel mal der Link von NDR2: http://www.ndr.de/resources/metadaten/audio/m3u/ndr2_hh.m3u

Joachim

Die FHEM Kollegen scheinen da was gebaut zu haben:
Modul StreamRadio Einrichtungshilfe – FHEMWiki

Habe im Augenblick keine Zeit, das unter die Lupe zu nehmen. Wenn du eine konkrete Frage hast, melde dich hier doch gerne nochmal. Würde mich freuen, wenn du lauffähige Ergebnisse hier einstellen kannst. Radiotext in der IPS-Visu wäre schon klasse :smiley:

Gruß,
ika

Hallo Ika,

ich vermute was die gemacht haben ist so eine Art „SqueezeBox-Light“. Zumindest verstehe ich das so, dass dort tatsächlich auch der Radio-Stream selbst genutzt wird. Wenn das nur so funktionieren würde, dann würde ich auf dem Raspberry aber eher eine SqueezeBox-Software installieren, das Modul von Nall-Chan nutzen und dort die gewünschten Daten entnehmen - hatte aber die Hoffnung, dass ich auch nur die Metadaten bekommen könnte…

Joachim

Genau, nimm den piCorePlayer, der läuft bei mir u. a. auf zwei alten PIs völlig problemlos. Und mit Nall-Chans Modul hast du alles im Griff :).

Naja, ich dachte in der Tat an etwas weniger Overkill g

In MP3-Streams liegt die Textinfo soweit ich weiß nach IceCast/Shoutcast-Standard vor.
Also einfach die MP3-URL öffnen und auslesen:


<?php

function getMp3StreamTitle($steam_url)
    {
        $result = false;
        $icy_metaint = -1;
        $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
            )
        );

        $default = stream_context_set_default($opts);

        $stream = fopen($steam_url, 'r');

        if($stream && ($meta_data = stream_get_meta_data($stream)) && isset($meta_data['wrapper_data'])){
            foreach ($meta_data['wrapper_data'] as $header){
                if (strpos(strtolower($header), 'icy-metaint') !== false){
                    $tmp = explode(":", $header);
                    $icy_metaint = trim($tmp[1]);
                    break;
                }
            }
        }

        if($icy_metaint != -1)
        {
            $buffer = stream_get_contents($stream, 300, $icy_metaint);

            if(strpos($buffer, $needle) !== false)
            {
                $title = explode($needle, $buffer);
                $title = trim($title[1]);
                $result = substr($title, 1, strpos($title, ';') - 2);
            }
        }

        if($stream)
            fclose($stream);                

        return $result;
		
	}



var_dump(getMp3StreamTitle('https://wdr-1live-live.icecastssl.wdr.de/wdr/1live/live/mp3/128/stream.mp3'));


var_dump(getMp3StreamTitle('http://mms.hoerradar.de:8000/rst128k'));

?>

Das müsste jetzt nur mal einer sauber coden.
Meistens liegen die Webradio-Streams ja als Playlist vor.

…dieses und andere Skripte habe ich schon ausprobiert - dieses von Dir gepostete läuft sich „tot“.
Nach meiner Recherche und Verständnis läuft das aber wohl so, das von einem Server der Audio-Stream kommt, von einem anderen (hier wird auf ICY genannt) kommen die Metadaten…

Joachim

Moin Joachim,
nein, das gepostete Skript funktioniert einwandfrei, mit beiden angegebenen Radiosendern.

Und genau das ist der Punkt: fütterst du Radiostreams im Playlist-Format oder nicht-MP3-Streams rein, klappt es nicht.

Wenn im MP3 einfach kein Radiotext gefunden werden kann, kriegste das auch so fehlerlos quittiert.

Poste doch mal, um welchen Radiosender (Streaming-URL) es dir geht. Ggf hab ich morgen Zeit, mir den mal anzuschauen.

Gesendet von iPhone mit Tapatalk Pro

Die Stream URL steht im m3u File.
Einfach dort rauskopieren.
Ist je ein Textfile :slight_smile:
Michael

…das habe ich auch schon entdeckt, komme von da aber nicht weiter. Angeblich sollen da auch selbst keine Tags enthalten sein, sondern eben auf etwas mit dem oben zitierten ICY…

so…habe die Code-Baustelle aufgeräumt und jetzt läuft es auch mit NDR2…:slight_smile:

Hier bekommt man Interpret und Titel, das ist schon mal gut. In der SqueezeBox bekommt man ja auch das Cover und weitere Informationen. Geht noch „mehr“ nach dem obrigen Schema?

Joachim