Thread Verfasser: ckoneman04
Thread ID: 1258
Thread Info
Es gibt 20 Beiträge zu diesem Thema, und es wurde 1191 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:

Code  Download 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.05.2017 um 10:24
 
John Doe
Das auslesen ginge auch so:

Code  Download Code  

<?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;
?>
 
Dat Tunes
Den Timestamp einfach umrechnen lassen mit showdate.

Code  Download Code  

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



Wenn es extern geladen wird ohne Fusion Funktionen

Code  Download Code  

'.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 !
 
ckoneman04
An welche Stelle muss das denn im Code ?
 
Dat Tunes
Bei deinen Script dann so:

Code  Download Code  

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 !
 
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.05.2017 um 15:35
 
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 !
 
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.
 
Dat Tunes
Nimm das mal unten

Code  Download Code  

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 !
 
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.05.2017 um 16:36
 
Systemweb
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.
Systemweb hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
 
ckoneman04
Ich habe meins jetzt auch fertiggestellt.

Hier der Code:

Code  Download 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.05.2017 um 10:23
 
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

Code  Download Code  

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
 
ckoneman04
Mach die Streamhistory ins Root Verzeichnis deiner PHP Fusion Page und setz an deiner Stelle folgendes ein:

Code  Download Code  

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.05.2017 um 10:24
 
Systemweb
Keine gute Idee, auf diese Weise wird die komplette Seite inkl. Header, Panels und Footer nochmal included.
 
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:

Code  Download Code  

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

add_to_title(" - zuletzt gespielte Titel");


Code  Download Code  

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


Code  Download Code  

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!
 
Systemweb
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.
 
rotz
gebe dir ein Tip-----fange die file_get_contents per XMl ab
 
Systemweb

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 Systemweb am 22.05.2017 um 15:09
 
ckoneman04
@Systemweb

Wir wäre es denn wenn du in das nächste Update eine Song History mit reinpackst? Für beide SC1/SC2....
 
Springe ins Forum: