kostenloser Webspace werbefrei: lima-city


Shoutcast "Playlist" - Nur die letzten 3 ausgeben

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    l********s

    Hallo Forum!
    Ich habe da mal wieder ein kleines Problem:
    Ich benutze zur Zeit folgenden Code, um einen Teil der History von Shoutcast wiederzugeben:

    <?php
     $shoutcast = new ShoutCast();
    $shoutcast->host = "stream";
    $shoutcast->port = "port";
    $shoutcast->passwd = "passwort";
    
    class ShoutCast {
        // Public
        var $host;
        var $port;
        var $passwd;
     
        //Private
        var $_xml;
        var $_error;
     
        function openstats() {
            $fp = fsockopen($this->host, $this->port, $errno, $errstr, 3);
            If (!$fp) {
                $this->_error = "$errstr ($errno)";
                return(0);
            } else {
                fputs($fp, "GET /admin.cgi?pass=".$this->passwd."&mode=viewxml HTTP/1.0\r\n");
                fputs($fp, "User-Agent: Mozilla\r\n\r\n");
                while (!feof($fp)) {
                        $this->_xml .= fgets($fp, 512);
                }
                fclose($fp);
     
                if (stristr($this->_xml, "HTTP/1.0 200 OK") == true) {
                    $this->_xml = trim(substr($this->_xml, 42));
                } else {
                    $this->_error = "Falsche Login Daten!!";
                    return(0);
                }
     
                $xmlparser = xml_parser_create();
                if (!xml_parse_into_struct($xmlparser, $this->_xml, $this->_values, $this->_indexes)) {
                    $this->_error = "Ein XML Fehler, bitte lade die Seite erneut";
                    return(0);
                }
     
                xml_parser_free($xmlparser);
     
                return(1);
            }
        }
     
    
     
        function GetStreamStatus() {
            return($this->_values[$this->_indexes["STREAMSTATUS"][0]]["value"]);
        }
     
    
     
        function GetSongHistory() {
            for($i=1;$i<sizeof($this->_indexes['TITLE']);$i++) {
                $arrhistory[$i-1] = array(
                                        "playedat"=>$this->_values[$this->_indexes['PLAYEDAT'][$i]]['value'],
                                        "title"=>$this->_values[$this->_indexes['TITLE'][$i]]['value']
                                    );
            }
     
            return($arrhistory);
        }
      function geterror() { return($this->_error); }
    }
     
    
    
    
     
    if ($shoutcast->openstats()) {
        // // We got the XML, gogogo!..
        if ($shoutcast->GetStreamStatus()) {
    
            echo "<b><center>Songhistory</b></center><br>\n";
            $history = $shoutcast->GetSongHistory();
            if (is_array($history)) {
                for ($i=0;$i<sizeof($history);$i++) {
    			
    			// DER AUSGABETEIL
                    echo  date("H:i:s ",$history[$i]['playedat'])." : ".$history[$i]["title"]."<br>\n";
    				
    				
                }
            } else {
                echo "Keine Songhistory verfügbar...";
            }
            echo "<p>";
     
          
        } else {
            echo "Server ist online, aber kein Stream verfügbar";
        }
    } else {
        // Ohhh, damnit..
        echo $shoutcast->geterror();
    }
    ?>


    Doch ich möchte nur, dass die letzten 3 ausgegeben werden.
    Könnt ihr mir da helfen?

    Mit freundlichen Grüßen, l-Websites
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. for ($i=0;$i<sizeof($history);$i++) {
    ersetzen durch
    for ($i=sizeof($history)-3;$i<sizeof($history);$i++) {
  4. Autor dieses Themas

    l********s

    Hey Super =)
    Das funktioniert ja :-)

    Kann ich es irgendwie hinbekommen, dass darüber steht: "Die 3 letzten Songs:", das Datum immer Fett ist, und nach jedem Lied ein "<br /> eingefügt wird?

    Würde das gehen?
  5. Klar!

    Das sollte kein Problem sein. Passe einfach deine echo Befehle an:
    echo "<h2>Die letzten drei Songs: </h2>\n";


    echo  "<strong>".date("H:i:s ",$history[$i]['playedat'])."</strong> : ".$history[$i]["title"]."<br />\n";


    mfg
    la mama - die dir auch im bplaced forum immer hilft.
  6. Autor dieses Themas

    l********s

    Hmm..
    Komischerweise finde ich das garnicht in dem Code?
    Bin ich gerade ein bisschen blöd, oder ist das ein Fehler?

    Edit:
    Ah, ich habe es gefunden ;-)



    Beitrag zuletzt geändert: 4.4.2010 18:57:00 von l-websites
  7. Hallo,

    ich habe jetzt nur den bereits bearbeiteten Code gepostet.

    Die original Stellen sind:
    echo "<b><center>Songhistory</b></center><br>\n";

    und
    echo  date("H:i:s ",$history[$i]['playedat'])." : ".$history[$i]["title"]."<br>\n";


    Findet sich jeweils unter
    // // We got the XML, gogogo!..



    mfg
    la-mama
  8. Autor dieses Themas

    l********s

    EDIT:

    Es hat sich alles sowei geklärt, nur:

    Komischerweise werden Umlaute nur falsch angezigt.
    Das ganze in UTF-8 habe ich auch schon abgespeichert, das das funktioniert leider nicht :-(

    Habt ihr da tipps?

    Beitrag zuletzt geändert: 5.4.2010 16:52:08 von l-websites
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!