Neues Börsenskript für Xibo – Daten kommen jetzt von Yahoo
[ACHTUNG: Alle Xibo-Skripte befinden sich jetzt bei GitHub]
Bislang hat das Börsenskript für Xibo die Daten von der Hauptseite der ARD-Börse erhalten. Heute wurde die Website relaunched, was sich zwangsläufig auf das Skript auswirkt…
OK, um es kurz zu machen, findet Ihr unten das neue Skript. Dieses erhält die Daten aus der Yahoo Finance API. Dadurch wird das Skript flexibler, da man nun die angezeigten Werte selber bestimmen kann, was auch schon angeregt wurde.
Ansonsten bleibt es „äußerlich“ gleich. Die Ausgabe ist immer noch eine Tabelle und auch die CSS-Styles bleiben gleich. Wer diese bislang nach seinen Wünschen angepaßt hatte, braucht sie nur zu kopieren.
Das ganze hat aber eine seltsame Einschränkung: man kann den Dow Jones nicht anzeigen. Muss irgendeine rechtliche Kiste sein.
<html> <head> <style type="text/css"> body{ font-family: Trebuchet MS; font-size: 12pt; } h1 { font-family: Trebuchet MS; width: 100%; border: none; background-color: 636363; color: #fff; font-size: 24px; text-align: center; padding-bottom: 5px; padding-top: 5px; } table td { font-family: Trebuchet MS; font-size: 16pt; } table.kurse { width: 100%; border: none; border-collapse: collapse; margin-bottom: 10px; } table.kurse .hideme { display: none; } table.kurse td { padding: 5px; border-top: 1px solid #808080; border-bottom: 1px solid #808080; } table.kurse td.title_small a { color: #000; text-decoration: none; } table.kurse td.value { text-align: right; } table.kurse td.diff { text-align: right; } table.kurse td.diff span.plus { color: green; } table.kurse td.diff span.minus { color: red; } #quelle { width: 100%; font-size: 10pt; text-align: center; } #chart { width: 100%; text-align: center; margin-bottom: 10px; } </style> </head> <body> <h1>Börsendaten</h1> <div id="chart"><img id="chart" style="border: none;" src="daxchart.php"></div>
Konfiguriert wird die Ausgabe über die Variable $arrSymbole. Es handelt sich dabei um ein PHP-Array, welches als Key das Symbol lt. Yahoo API enthält und als Value den ausgeschriebenen Namen, wie man ihn gerne in der Ausgabe sehen möchte.
<?php //Börsensymbole, dessen Werte geladen werden sollen. //Hier herauszufinden: http://de.finance.yahoo.com/ $arrSymbole = array( "^GDAXI" => "DAX", "^MDAXI" => "MDAX", "^TECDAX" => "TecDAX", "^SDAXI" => "SDAX", "^STOXX50E" => "EuroStoxx 50", "^GSPC" => "S&P 500", "^NDX" => "Nasdaq 100", "EURUSD=X" => "1 Euro in $", "XAUUSD=X" => "Gold" ); $kurseURL = "http://download.finance.yahoo.com/d/quotes.csv?s="; $kurseURL .= urlencode(implode(",",array_keys($arrSymbole))); //$kurseURL .= "&f=s0n0l1p2&e=.csv"; <-- funktioniert nicht mehr $kurseURL .= "&f=snl1p2&e=.csv"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $kurseURL); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $strKurse = utf8_decode(curl_exec($ch)); curl_close($ch); //echo "<!--\r\n"; //echo $kurseURL . "\r\n\r\n"; //echo $strKurse; //echo "\r\n-->\r\n"; $arrKurse = explode("\n", $strKurse); echo "<table class='kurse'>"; for($iSymbol=0;$iSymbol<count($arrKurse)-1;$iSymbol++) { $arrKurse[$iSymbol] = str_replace("\"", "", $arrKurse[$iSymbol]); $arrKurse[$iSymbol] = str_replace("N/A", "", $arrKurse[$iSymbol]); echo "<tr>"; $arrKurs = explode(",", $arrKurse[$iSymbol]); echo "<td class='title_small'>" . $arrSymbole[$arrKurs[0]] . "</td>"; echo "<td class='value'>" . $arrKurs[2] . "</td>"; echo "<td class='diff'><span class='" . (substr($arrKurs[3], 0, 1)=="+"?"plus":(substr($arrKurs[3], 0, 1)=="-"?"minus":"")) . "'>" . $arrKurs[3] . "</span></td>"; echo "</tr>"; } echo "</table>"; ?>
<div id="quelle">Datenquelle: Yahoo Finance API</div> </body> </html>
Bei der Gelegenheit habe ich auch gleich das Webcam-Bild des DAX geändert. Das Bild wird nun in der daxchart.php aufbereitet.
<? // // daxchart.php - Tageschart wird geladen und ein bißchen zurechtgeschnitten. // $symbol = "^GDAXI"; $src = "http://chart.finance.yahoo.com/z?s=" . urlencode($symbol) . "&t=1d&q=l&l=on&z=l&a=v&p=s&lang=de-DE®ion=DE&random=" . rand(1,9999999999999999999); $daxChart = @imagecreatefrompng($src); if ($daxChart) { $daxCropped = imagecreatetruecolor(800, 330); imagecopyresampled($daxCropped, $daxChart, 0, 0, 0, 0, 800, 330, 800, 330); header('Content-type: image/png'); imagejpeg($daxCropped); imagedestroy($daxCropped); } ?>
Fragen und Anregungen bitte wieder in die Kommentare…
Pingback: Börsendaten in Xibo anzeigen | noltenet.de
Funktioniert wunderbar, auch mit dem Einbinden eigener Kurse. Vielen Dank fürs Teilen!
Hallo Michael,
auch von mir ein Riesen-Dankeschön fürs Teilen! Das „Widget“ funktioniert bei mir einwandfrei.
Habe noch eine Frage: Hast du noch vor, das Skript zum Anzeigen der RSS-Daten hochzuladen? Habe mich mal selbst rangewagt, aber verstehe leider noch zu wenig von der Materie…
Hallo Jan,
die Anzeige der RSS-Feeds erfolgt nicht über ein Skript, sondern geschieht direkt per Xibo. Einfach in der Zeitleiste einer Region den Punkt „Ticker“ auswählen und die RSS-URL einfügen…
Vielen Dank für die schnelle Antwort! Hat super geklappt und lässt sich, dank Xibo, auch direkt im Editor formatieren.
Ich bekomme es leider nicht zum laufen, das Chart wird nicht angezeigt (Script läuft aber durch) und bei den Böresendaten fehlen die Namen in der ersten Spalte, Fehler im Apache log:
„Undefined index: in /var/www/html/boerse.php on line 122“
Danke, Lars
Hallo Lars,
ändere mal bitte den Code in Zeile 98 (s. oben) von
in
Scheinbar hat Yahoo die API ein wenig geändert…
Hallo Michael,
danke für die Rückmeldung, die Börsendaten sind nun mit Titel vorhanden!
Das Chart/Bild klappt leider nicht, habe auch keine Fehlermeldung im LOG.
Lars
Der Code für das Chartbild ist aber in Ordnung, gerade noch getestet.
Hat dein Webserver die PHP-GD-Module?
Mhh, dann habe ich wohl ein anderes Problem, GD ist vorhanden (lt. phpinfo):
gd
GD Support enabled
GD Version 2.1.1-dev
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.5.2
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 8
PNG Support enabled
libPNG Version 1.2.50
WBMP Support enabled
XPM Support enabled
libXpm Version 30411
XBM Support enabled
WebP Support enabled
Danke, Lars