Im letzten Monat hatte ich ein kurzes Tutorial zur Suche nach Hashtags in der Twitter Search API geschrieben. Darauf kam eine Anfrage, wie den eine einfache Twitter-Wall mit PHP zu realisieren sei. Auch das ist ganz einfach – hier sollte man die Parameter since_id verwenden um immer nur die neuesten Tweets nachzuladen. Im folgenden Beispiel wurde das ganz einfach mit einem Meta-Refresh der Seite realisiert. Schöner wäre dies mit Ajax, aber um das Beispiel möglichst einfach zu halten habe ich darauf verzichtet:
<?php // Tutorial: Eine einfache Twitter-Wall im Eingenbau // http://frank-it-beratung.com/blog/ session_start(); // Suche nach Hashtag... $hashtag="design"; $APIurl = "http://search.twitter.com/search.json"; // Refreh-Url mit since_id ggf aus Session laden if (!isset($_SESSION['refresh_url'])) { $param="?q=%23".$hashtag; } else { $param=$_SESSION['refresh_url']; } $APIurl.=$param; // weitere Paramter für die Suche siehe // https://dev.twitter.com/docs/using-search // GET vorbereiten $opts = array('http' => array( 'method' => 'GET' ) ); // mit file_get_contents versenden $result = file_get_contents($APIurl, false, stream_context_create($opts)); $json=json_decode($result); // since_id in Session speichern $_SESSION['refresh_url']=$json->refresh_url; // neue Ergebnisse seit der letzten Suche $neueergebnisse=""; for ($i = 0; $i < count($json->results); $i++) { $neueergebnisse.="<img src='".$json->results[$i]->profile_image_url; $neueergebnisse.="' align='left' width='48' height='48' hspace='5' />"; $neueergebnisse.=$json->results[$i]->from_user; $neueergebnisse.=" (ID: " .$json->results[$i]->from_user_id .")<br/>"; $neueergebnisse.="<strong style='font-size:20pt;'>"; $neueergebnisse.=utf8_decode($json->results[$i]->text)."</strong>"; $neueergebnisse.="<br/>"; $neueergebnisse.="Datum: ". $json->results[$i]->created_at; $neueergebnisse.=" (Tweet-ID: " . $json->results[$i]->id_str.")"; $neueergebnisse.="<hr/>"; } // Alte Ergebnisse aus Session holen // besser wäre hier u. U. Speicherung in einer Datenbank if (isset($_SESSION['altetreffer'])) { $altetreffer=$_SESSION['altetreffer']; } else { $altetreffer=""; } // Alte und neue zusammenfügen und in Session legen $alletreffer=$neueergebnisse . $altetreffer; $_SESSION['altetreffer']=$alletreffer; ?> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Twitter-Wall Tutorial</title> <?php // optimal wäre eine Ajax-Lösung, aber hier ganz einfach // mit einem Refresh alle 60 Sekunden (Achtung: Rate Limit!) ?> <meta http-equiv="refresh" content="60; URL=Twitterwall-Tutorial.php"> </head> <body> <h1>Twitter-Wall für #<?php echo $hashtag ?></h1> Anzahl neuer Treffer: <?php echo count($json->results); ?> am <?php echo date("d.m.Y H:m:i"); ?> Uhr <hr/> <?php echo $alletreffer; ?> </body> </html>
P.S.
Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de
Sorry, auch dieser Artikel war versehentlich einige Tage „unsichtbar“ und ist jetzt wieder online!