Auslesen der XML des SHOUTcast 2

Aktuell führen wir noch einige Anpassungen durch, das Forum wurde jedoch bereits live geschaltet.
  • Hallo Leute,

    heute hab ich mal eine Frage an die PHP Profis unter Euch :)

    Ich lese die played.html eines SHOUTcast 2 Servers als XML aus (via SimpleXML).
    Die Datei gibt mir ja die letzten 20 gespielten Titel mit dem passenden Unix-Timestamp aus.
    Auslesen und ausgeben der Rohdaten für alle 20 Titel ist kein Problem und funktioniert.

    Mein Problem ist, dass sich der Timestamp nicht in eine Uhrzeit umwandeln lässt.
    Ich übernheme den Timestamp in eine Variable und versuche dann mit der PHP date-Funktion:

    Code
    $zeit = date("M:s", $timestamp)


    den Timestamp in die Zeit umzuwandeln.

    Das Ergebnis ist recht ernüchternd, nämlich gar keins :P Es erfolgt einfach keine Ausgabe.

    Wenn ich den Timestamp aus der XML "manuell" auslese und im Code den $timestamp durch die unformatierte Zahl ersetze also:

    Code
    $zeit = date("M:s", 1455183734)


    bekomme ich das richtige Ergebnis.

    Hat sich mit dem Thema schon mal jemand beschäftigt? Oder kennt einer von Euch eine Alternative zu date()?

    Vielen Dank schon mal.
    Gruß Pinball

    # dpkg-reconfigure brain
    Paket »brain« ist nicht installiert und es ist keine Info verfügbar

  • Ja, das Auslesen klappt ohne Probleme, wenn ich den Timestamp in die Variable

    Code
    $timestamp


    übergebe und mit

    Code
    echo $timestamp


    ausgebe, ist alles in Ordnnug. Nur das Umwandeln in die Zeit (z.B. 11:02) klappt nicht.




    So sieht der vollständige Code aktuell aus:

    Code
    // Streamdaten //$host = "http://url-zum-host";$port = 1234;$id = 1;$type = "xml";$pass = "password";// Auslesen der XML //$streamurl = $host.":".$port."/played.html?sid=".$id."&type=".$type."&pass=".$pass;$niceurl = urlencode($streamurl);$lastplayed = simplexml_load_file($niceurl);// XML-Daten für einen Titel in Variablen übergeben //$titel = $lastplayed->SONGHISTORY->SONG[0]->TITLE;$timestamp = $lastplayed->SONGHISTORY->SONG[0]->PLAYEDAT;echo $titel;echo $timestamp;


    Bis hier her passt alles so wie es soll. Die Ausgabe ist nur zum testen und noch komplett unformatiert.




    Gebe ich dann

    Code
    echo date("H:m", $timestamp);


    noch zusätzlich an, erfolgt hier keine Ausgabe.



    Ich habe die date() Funktion schon öfter in meinen Scripten verwendet. Bisher hat es immer zum gewünschten Ergebnis geführt.

    # dpkg-reconfigure brain
    Paket »brain« ist nicht installiert und es ist keine Info verfügbar

  • Ja richtig, "H:i" wäre eigentlich der richtige String, der Code ist wie gesagt noch unformatiert. "H:i" funktioniert aber auch nicht :P



    Ich bin weiter auf der Suche. Werde mich auch mal bei Github umschauen. DANKE




    Wer lang sucht, der findet :D



    Hab es jetzt mit der DateTime Funktion versucht und es klappt.

    Code
    $date = new DateTime("@$timestamp"); echo $date->format('H:i') . "\n";


    bringt das gewünschte Ergebnis :)



    Je nach Serverzeit müssen halt noch die Zeitzonen Einstellungen angepasst werden.



    Nochmal DANKE


    Gruß Pinball

    # dpkg-reconfigure brain
    Paket »brain« ist nicht installiert und es ist keine Info verfügbar