Thread Verfasser: ckoneman04
Thread ID: 1258
Thread Info
Es gibt 20 Beiträge zu diesem Thema, und es wurde 7644 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
Shoutcast 2 History
ckoneman04
Hab da ein Script um meine History abzufragen. Funktioniert soweit, nur das er mir statt die Uhrzeit einen Zeitstempel anzeigt.

Hier der Code:

<?php

// Streamdaten //

$host = "ip";
$port = port;
$id = 1;
$type = "xml";
$pass = "pw";

// 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[1]->TITLE;
$timestamp = $lastplayed->SONGHISTORY->SONG[1]->PLAYEDAT;
$titel2 = $lastplayed->SONGHISTORY->SONG[2]->TITLE;
$timestamp2 = $lastplayed->SONGHISTORY->SONG[2]->PLAYEDAT;
$titel3 = $lastplayed->SONGHISTORY->SONG[3]->TITLE;
$timestamp3 = $lastplayed->SONGHISTORY->SONG[3]->PLAYEDAT;
$titel4 = $lastplayed->SONGHISTORY->SONG[4]->TITLE;
$timestamp4 = $lastplayed->SONGHISTORY->SONG[4]->PLAYEDAT;
$titel5 = $lastplayed->SONGHISTORY->SONG[5]->TITLE;
$timestamp5 = $lastplayed->SONGHISTORY->SONG[5]->PLAYEDAT;
$titel6 = $lastplayed->SONGHISTORY->SONG[6]->TITLE;
$timestamp6 = $lastplayed->SONGHISTORY->SONG[6]->PLAYEDAT;
$titel7 = $lastplayed->SONGHISTORY->SONG[7]->TITLE;
$timestamp7 = $lastplayed->SONGHISTORY->SONG[7]->PLAYEDAT;
$titel8 = $lastplayed->SONGHISTORY->SONG[8]->TITLE;
$timestamp8 = $lastplayed->SONGHISTORY->SONG[8]->PLAYEDAT;
$titel9 = $lastplayed->SONGHISTORY->SONG[9]->TITLE;
$timestamp9 = $lastplayed->SONGHISTORY->SONG[9]->PLAYEDAT;
$titel10 = $lastplayed->SONGHISTORY->SONG[10]->TITLE;
$timestamp10 = $lastplayed->SONGHISTORY->SONG[10]->PLAYEDAT;

echo "$titel $timestamp<br>";
echo "$titel2 $timestamp2<br>";
echo "$titel3 $timestamp3<br>";
echo "$titel4 $timestamp4<br>";
echo "$titel5 $timestamp5<br>";
echo "$titel6 $timestamp6<br>";
echo "$titel7 $timestamp7<br>";
echo "$titel8 $timestamp8<br>";
echo "$titel9 $timestamp9<br>";
echo "$titel10 $timestamp10<br>";

?>

Bearbeitet von Septron am 16. Mai 2017 08:24:54
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
John Doe
Das auslesen ginge auch so:

<?php
// CONFIGURATION
$ip = 'xx.xxx.xxx.xx'; // IP vom Shoutcast 2 Server eintragen
$port = 'xxxx'; // Port vom Shoutcast 2 Server eintragen
$sid = '1'; // StreamID vom Shoutcast 2 Server eintragen

//Songhistory
$songhistory = file_get_contents("http://".$ip.":".$port."/played.html?sid=".$sid);
$startstring = '<table class="default" border="0" cellpadding="2" cellspacing="2">';
$endstring = '</table><br>';
$posstart = strpos($songhistory, $startstring);
$posend = strpos($songhistory, $endstring);
$laenge = $posend - $posstart;
$song_history = substr($songhistory, $posstart, $laenge);


//Ausgabe
echo $song_history;
?>
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Dat Tunes
Den Timestamp einfach umrechnen lassen mit showdate.


'.showdate("%d.%b.%y - %h:%m:%s", $timestamp10).'


Wenn es extern geladen wird ohne Fusion Funktionen

'.date("%d.%b.%y - %h:%m:%s", $timestamp10).'

Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
ckoneman04
An welche Stelle muss das denn im Code ?
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Dat Tunes
Bei deinen Script dann so:


echo "$titel10 ".showdate('%d.%b.%y - %h:%m:%s', $timestamp10)."<br>";


Ungetestet, kann sein du die " mit ' tauschen musst oder anderes rum.
Grade noch nicht ganz wieder daheim angekommen.
Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
ckoneman04
Na es klappt nicht wirklich.... Hab es mit "showdate" und "date" versucht, hab mit " und mit ' versucht. Keine Ausgabe der Zeit

Zusammengefügt am 02. Mai 2017 um 15:!35:12:
Warning: date() expects parameter 2 to be long, object given in /www/htdocs/w0165182/radio-chaos-factory.de/infusions/sw_streamstatus1_panel/letztensongs.php on line 41
Bearbeitet von ckoneman04 am 02. Mai 2017 13:35:12
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Dat Tunes
Hänge mal die ganze Datei an, so kann man nichts machen.
Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
ckoneman04
Alles klar hier ist die Datei Smile
ckoneman04 hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Dat Tunes
Nimm das mal unten


echo "".$titel."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp)."<br>";
echo "".$titel2."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp2)."<br>";
echo "".$titel3."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp3)."<br>";
echo "".$titel4."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp4)."<br>";
echo "".$titel5."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp5)."<br>";
echo "".$titel6."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp6)."<br>";
echo "".$titel7."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp7)."<br>";
echo "".$titel8."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp8)."<br>";
echo "".$titel9."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp9)."<br>";
echo "".$titel10."  ".showdate('%d.%b.%y - %h:%m:%s', $timestamp10)."<br>";

Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
ckoneman04
Mhhh es will nicht.... hab das showdate mal in date geändert weil es nix mit Fusion zu tun hat soll unabhängig laufen Smile
ckoneman04 hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von ckoneman04 am 03. Mai 2017 14:36:11
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Krelli
Basierend auf Harlekins Vorschlag habe ich das ganze für die aktuelle Shoutcast Version 2.5.1.724 angepasst, da sich zwischenzeitlich der Quellcode der Ausgabe etwas geändert hat.

Die angehängte Datei einfach ins Rootverzeichnis von Fusion packen, verlinken, Parameter anpassen.
Krelli hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
ckoneman04
Ich habe meins jetzt auch fertiggestellt.

Hier der Code:

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Title: Letze Songs Panel (Shoutcast2) for PHP-Fusion 7
| Filename: letztensongs.php
| Author: Chrissi
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once "maincore.php";
require_once THEMES."templates/header.php";

// Streamdaten //

$host = "IP mit http://";
$port = "Port";
$id = "1";
$type = "xml";
$pass = "Stream PW";

// 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 //

setlocale(LC_TIME, "de_DE.utf8");
date_default_timezone_set("Europe/Berlin");

$titel = $lastplayed->SONGHISTORY->SONG[0]->TITLE;

$titel1 = $lastplayed->SONGHISTORY->SONG[1]->TITLE;
$zeitstempel1 = $lastplayed->SONGHISTORY->SONG[1]->PLAYEDAT;

$titel2 = $lastplayed->SONGHISTORY->SONG[2]->TITLE;
$zeitstempel2 = $lastplayed->SONGHISTORY->SONG[2]->PLAYEDAT;

$titel3 = $lastplayed->SONGHISTORY->SONG[3]->TITLE;
$zeitstempel3 = $lastplayed->SONGHISTORY->SONG[3]->PLAYEDAT;

$titel4 = $lastplayed->SONGHISTORY->SONG[4]->TITLE;
$zeitstempel4 = $lastplayed->SONGHISTORY->SONG[4]->PLAYEDAT;

$titel5 = $lastplayed->SONGHISTORY->SONG[5]->TITLE;
$zeitstempel5 = $lastplayed->SONGHISTORY->SONG[5]->PLAYEDAT;

$titel6 = $lastplayed->SONGHISTORY->SONG[6]->TITLE;
$zeitstempel6 = $lastplayed->SONGHISTORY->SONG[6]->PLAYEDAT;

$titel7 = $lastplayed->SONGHISTORY->SONG[7]->TITLE;
$zeitstempel7 = $lastplayed->SONGHISTORY->SONG[7]->PLAYEDAT;

$titel8 = $lastplayed->SONGHISTORY->SONG[8]->TITLE;
$zeitstempel8 = $lastplayed->SONGHISTORY->SONG[8]->PLAYEDAT;

$titel9 = $lastplayed->SONGHISTORY->SONG[9]->TITLE;
$zeitstempel9 = $lastplayed->SONGHISTORY->SONG[9]->PLAYEDAT;

$titel10 = $lastplayed->SONGHISTORY->SONG[10]->TITLE;
$zeitstempel10 = $lastplayed->SONGHISTORY->SONG[10]->PLAYEDAT;


$abspielzeit = date("H:i", "$zeitstempel");
$abspielzeit1 = date("H:i", "$zeitstempel1");
$abspielzeit2 = date("H:i", "$zeitstempel2");
$abspielzeit3 = date("H:i", "$zeitstempel3");
$abspielzeit4 = date("H:i", "$zeitstempel4");
$abspielzeit5 = date("H:i", "$zeitstempel5");
$abspielzeit6 = date("H:i", "$zeitstempel6");
$abspielzeit7 = date("H:i", "$zeitstempel7");
$abspielzeit8 = date("H:i", "$zeitstempel8");
$abspielzeit9 = date("H:i", "$zeitstempel9");
$abspielzeit10 = date("H:i", "$zeitstempel10");


opentable('Die letzten 10 gespielten Titel');

echo "<table><tr>";

echo "<td width='120'>";
echo "<b><div style='background-color:white'><font color='black'>&nbsp;Uhrzeit</font></div></b><br>";
echo "&nbsp;<font color='red'>Aktuell</font><br><br>";
echo "&nbsp;$abspielzeit1<br><br>";
echo "&nbsp;$abspielzeit2<br><br>";
echo "&nbsp;$abspielzeit3<br><br>";
echo "&nbsp;$abspielzeit4<br><br>";
echo "&nbsp;$abspielzeit5<br><br>";
echo "&nbsp;$abspielzeit6<br><br>";
echo "&nbsp;$abspielzeit7<br><br>";
echo "&nbsp;$abspielzeit8<br><br>";
echo "&nbsp;$abspielzeit9<br><br>";
echo "&nbsp;$abspielzeit10";
echo "</td>";

echo "<td width='700'>";
echo "<b><div style='background-color:white'><font color='black'>&nbsp;Titel</font></div></b><br>";
echo "&nbsp;$titel<br><br>";
echo "&nbsp;$titel1<br><br>";
echo "&nbsp;$titel2<br><br>";
echo "&nbsp;$titel3<br><br>";
echo "&nbsp;$titel4<br><br>";
echo "&nbsp;$titel5<br><br>";
echo "&nbsp;$titel6<br><br>";
echo "&nbsp;$titel7<br><br>";
echo "&nbsp;$titel8<br><br>";
echo "&nbsp;$titel9<br><br>";
echo "&nbsp;$titel10";
echo "</td>";

echo "</tr></table><br>";

closetable();

require_once THEMES."templates/footer.php";
?>



Anbei habe ich das ganze aber auch noch als Datei gehangen.
ckoneman04 hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Septron am 16. Mai 2017 08:23:25
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Snoopy01
Hallo zusammen

bräuchte mal eure hilfe

ich bekomme dieses nicht gebacken da ein zubauen es geht um diese datei streamhistory.php

ich setz mal ein ausschnitt von meiner theme als code hier rein wo das mit der streamhistory rein soll


echo "<td class='box2' height='150' width='380' align='center' valign='top'><div class='box2div'><div style='padding:5px; font-weight:bold;'>";
      echo "<h4>Wunsch / Gruss Box</h4>\n";
      include INFUSIONS."studiobox_panel/studiobox_panel.php";
        echo "</div></div></td>";   
        echo "<td class='box3' height='170' width='560%' align='center' valign='top'><div class='box3div'><div style='padding:5px; font-weight:bold; font-size:12px;'><center><span class='shadow'>Zuletzt gespielte Lieder</span>";
      HIER SOLL DIESE SONGHISTORY REIN ????)
        echo "</div></div></td>";
     
         echo "</tr><tr><td colspan='4' height=''></td></tr><tr>
        <td class='nobar' height='' width='100%' align='center' colspan='4'></td></tr>
   </table>";


wäre euch dankbar dafür wenn wer mir helfen könnte
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
ckoneman04
Mach die Streamhistory ins Root Verzeichnis deiner PHP Fusion Page und setz an deiner Stelle folgendes ein:


echo "<td class='box2' height='150' width='380' align='center' valign='top'><div class='box2div'><div style='padding:5px; font-weight:bold;'>";
      echo "<h4>Wunsch / Gruss Box</h4>\n";
      include INFUSIONS."studiobox_panel/studiobox_panel.php";
        echo "</div></div></td>";   
        echo "<td class='box3' height='170' width='560%' align='center' valign='top'><div class='box3div'><div style='padding:5px; font-weight:bold; font-size:12px;'><center><span class='shadow'>Zuletzt gespielte Lieder</span>";
      include BASEDIR.'streamhistory.php';
        echo "</div></div></td>";
     
         echo "</tr><tr><td colspan='4' height=''></td></tr><tr>
        <td class='nobar' height='' width='100%' align='center' colspan='4'></td></tr>
   </table>";

Bearbeitet von Septron am 16. Mai 2017 08:24:04
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Krelli
Keine gute Idee, auf diese Weise wird die komplette Seite inkl. Header, Panels und Footer nochmal included.
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
John Doe
Man kann die streamhistory.php durchaus per include einbinden, allerdings sollte man dann in der Datei selbst die folgenden Codezeilen löschen oder auskommentieren:


require_once "maincore.php";
require_once THEMES."templates/header.php";

add_to_title(" - zuletzt gespielte Titel");



opentable("Liste der 10 zuletzt gespielten Titel");



closetable();

require_once THEMES."templates/footer.php";


Eine andere Möglichkeit wäre, daraus ein Panel zu bauen und dieses dann an entsprechender Stelle zu includen.

Ausserdem kann es sein, dass man optisch noch ein bisschen was anpassen muss.
Dieses Mitglied wurde gelöscht!
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Krelli
Wichtig ist vor allem, dass dieser Code nur mit der aktuellen Shoutcast v2 Version läuft, da der Quellcode in den Versionen abweicht und die gesetzten Schnittpunkte für den Auszug der relevanten Infos nach den definierten Quellcode-Elementen sucht.
Wenn es dabei Abweichungen gibt, bleibt die Ausgabe nämlich leer.

Wer also eine Vorgängerversion oder sogar noch Shoutcast v1 nutzt muss die entspr. Passagen abändern.
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
rotz
gebe dir ein Tip-----fange die file_get_contents per XMl ab
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Krelli

Zitat

rotz schrieb:

gebe dir ein Tip-----fange die file_get_contents per XMl ab

Sicher ist hier gemeint, die Infos per XML auszulesen.
Hierfür muss man sich authentifizieren. In diesem Thread ist diese Methode bereits angesprochen worden und als Beispielcode vorhanden.

Allerdings bin ich auf diesen Code nicht näher eingegangen, denn im Beispiel wird mittels URL-Parameter authentifiziert, was keineswegs ratsam ist. Sollte nämlich das Script mal zu einem Fehler führen, könnte das Passwort aus der Fehlermeldung herausgelesen werden.
Besser wäre, die Authentifizierung mittels Request zu verwenden. Dafür müsste das Beispiel jedoch um einiges abgeändert werden.

Einfacher erschien mir, die 7.html ohne erforderliche Authentifizierung zu verwenden. Diese Methode spart CPU-Leistung, RAM, Zeit ... erfordert aber den Einsatz der aktuellsten v2 Version von Shoutcast.
Bearbeitet von Krelli am 22. Mai 2017 13:09:16
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
ckoneman04
@Systemweb

Wir wäre es denn wenn du in das nächste Update eine Song History mit reinpackst? Für beide SC1/SC2....
Information:
PHP Version: 7.4.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP7
 
Springe ins Forum: