Linuchs: Titel aus einem Lifestream auslesen

Hallo,

habe hier einen Winamp-Lifestream, der im Linux-Programm namens "Videos" den laufenden Titel anzeigt:
login.streamplus.de

Wie kann ich diesen Text mit PHP auslesen? Die URL kann ich mit PHP öffnen.

Linuchs

  1. wollte Winamp installieren, wird aber im Ubuntu-Softwarecenter nicht angeboten. Stattdessen Audocious installiert und URL http://login.streamplus.de/app.php/shoutcast/public/playlist/download/22117.m3u erfolgreich geöffnet.

    Die Titel der laufenden Songs wird deutlich angezeigt, darunter steht
    radio-lila.de
    streamplus26.leonex.de

    Leider gelingt es nicht, die URL mit PHP zu erreichen:

    $fp = fsockopen("www.login.streamplus.de", 8000, $errno, $errstr, 30);  
    if (!$fp) {  
        echo "<pre>[$errstr ($errno)</pre>\n";  
    } else {  
        $out  = "GET / HTTP/1.1\r\n";  
        $out .= "Host: www.example.com\r\n";  
        $out .= "Connection: Close\r\n\r\n";  
        fwrite($fp, $out);  
        while (!feof($fp)) {  
            echo fgets($fp, 128);  
        }  
        fclose($fp);  
    }  
    
    

    Warning: fsockopen(): unable to connect to www.login.streamplus.de:8000 (Connection refused) in /home/.../winamp_titel_auslesen.php on line 24

    [Connection refused (111)

    1. Hi,

      wollte Winamp installieren, wird aber im Ubuntu-Softwarecenter nicht angeboten.

      das sollte dich nicht überraschen - Winamp ist ein reines Windows-Programm, wie auch der Name schon suggeriert.

      Leider gelingt es nicht, die URL mit PHP zu erreichen:
      $fp = fsockopen("www.login.streamplus.de", 8000, $errno, $errstr, 30);

      Vielleicht weil du hier einen anderen Hostnamen angibst als vorher beschrieben?

      Ciao,
       Martin

      --
      Die letzten Worte des Hardware-Bastlers:
      Das Netzkabel lass ich wegen der Erdung lieber dran.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo Martin,

        Leider gelingt es nicht, die URL mit PHP zu erreichen:
        $fp = fsockopen("www.login.streamplus.de", 8000, $errno, $errstr, 30);

        Vielleicht weil du hier einen anderen Hostnamen angibst als vorher beschrieben?

        Ich habe wohl so ziemlich alles ausprobiert, natürlich auch
        $fp = fsockopen("www.login.streamplus.de/app.php/shoutcast/public/playlist/download/22117.m3u", 8000, $errno, $errstr, 30);
        Aber eine Datei ist ja kein Host.

        In der Doku heisst es:
        resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )

        Weiter unten in der Doku dann das Beispiel
        $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);

        Habe keine Ahnung, wie ich damit eine Datei-Info auslesen könnte.

        Linuchs

        1. Hallo,

          habe hier PHP-Code gefunden.

          Da gibt's auch ein Live-Demo.

          Stream-URL: http://login.streamplus.de/app.php/shoutcast/public/playlist/download/22117.m3u

          Es wird ausgegeben: Radio Offline.

          Stimmt nicht, im Programm Audacious läuft es.

          Linuchs

          1. Stream-URL: http://login.streamplus.de/app.php/shoutcast/public/playlist/download/22117.m3u

            Stimmt nicht, das ist die Datei wo die Stream-URL drin steht.

            Dadurch auch folgendes kein Wunder mehr:

            Es wird ausgegeben: Radio Offline.
            Stimmt nicht, im Programm Audacious läuft es.

            Audacious weiß auch was es mit der m3u-Datei machen soll ;)

            Hier mal nen Code-Fetzen um zum Stream zu verbinden:

              
            $stream_info = file_get_contents("http://login.streamplus.de/app.php/shoutcast/public/playlist/download/22117.m3u");  
            if($stream_info) {  
                $addr = null;  
                $stream_info = explode("\n", trim(str_replace("\r\n", "\n", $stream_info)));  
                foreach($stream_info as $line) {  
                    if($line[0] != '#') {  
                        $data = null;  
                        if(preg_match('~^(http[s]?://|)(.+):(\d+)$~i', $line, $data)) { // Sollte noch verbessert werden, wollt mir jetzt nich die m3u-Spec angucken  
                            $addr = array($data[2], intval($data[3]));  
                            break;  
                        }  
                    }  
                }  
                if(!$addr) {  
                    echo "Failed! Stream address not found.";  
                }  
                else {  
                    $errno = null;  
                    $errstr = null;  
                    $sock = fsockopen($addr[0], intval($addr[1]), $errno, $errstr);  
                    if(!$sock) {  
                        echo '[', $errno, ']: ', $errstr;  
                    }  
                    else {  
                        // Kram auslesen  
                        fclose($sock);  
                    }  
                }  
            }  
            
            

            MfG
            bubble

            --
            If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  2. habe hier einen Winamp-Lifestream, der im Linux-Programm namens "Videos" den laufenden Titel anzeigt:
    Wie kann ich diesen Text mit PHP auslesen? Die URL kann ich mit PHP öffnen.

    Ich würd da gar nicht erst probieren, mit irgendeiner Programmiersprache direkt das Dingen zu öffnen. Stattdessen z.B. via mplayer einen Systemaufruf initieren und die Daten abgreifen.

    1. Ich würd da gar nicht erst probieren, mit irgendeiner Programmiersprache direkt das Dingen zu öffnen. Stattdessen z.B. via mplayer einen Systemaufruf initieren und die Daten abgreifen.

      Die Anzeige soll in eine Webseite eingeblendet werden. So in der Form "Jetzt läuft ..."

      Unabhängig von Betriebssystem und den vorhandenen Programmen des Client.

      1. Die Anzeige soll in eine Webseite eingeblendet werden. So in der Form "Jetzt läuft ..."
        Unabhängig von Betriebssystem und den vorhandenen Programmen des Client.

        Der Client juckt dabei doch nicht. Pseudocode auf dem _Server_:

        $title = system('mplayer --identify --stream-url=example.net....');
        $title = formatiereSystemAufrufRueckgabeFuerAusgabeZurecht($title);
        print $title;

  3. Hi,

    Wie kann ich diesen Text mit PHP auslesen? Die URL kann ich mit PHP öffnen.

    das hab ich schon gemacht. (bis die bladde zu klein wurde :-)

    mit ajax aufgerufen.

    <?php  
    //echo "und los";  
    $verz="/mnt/music/music_mai14";  
    $sender = $_GET['sender'];  
    //$sender = "http://www.antenne.de/webradio/antenne.m3u";  
    //$sender = "http://yp.shoutcast.com/sbin/tunein-station.pls?id=5661";  
    //$sender = "http://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3";  
    //$sender = "http://www.rockantenne.de/webradio/rockantenne.m3u";  
    //$sender = "http://www.rockantenne.de/webradio/channels/classic-perlen.m3u";  
    //$sender = "http://yp.shoutcast.com/sbin/tunein-station.pls?id=205757";  
      
    $code="/usr/bin/streamripper " . $sender . " -d " . $verz . " -o larger &";  
    $back = exec ($code);  
    echo $back ;  
      
    exit;  
    ?>
    

    Bin mir aber nicht mehr sicher, ob ich das Modul nicht in einem anderen Verzeichnis hatte und über exec von /var/www/radio.php aufgerufen hatte (wegen Berechtigung)

    Viele Grüße aus LA

    --
    ralphi
    1. $sender = $_GET['sender'];
      [...]
      $code="/usr/bin/streamripper " . $sender . " -d " . $verz . " -o larger &";
      $back = exec ($code);
      echo $back ;

        
      Damit ist das Scheunentor deines Servers sperrangelweit offen.  
        
      MfG  
      bubble
      
      -- 
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
      
      1. Hi,

        Damit ist das Scheunentor deines Servers sperrangelweit offen.

        ist ja nur für intern, hinter nem Router (LAN).
        Oder traust du streamripper nicht?

        Viele Grüße aus LA

        --
        ralphi