Software für das Flipdot-Display

Seite 4: Anzeige für aktuelle Tweets

Inhaltsverzeichnis

Persönlich finde ich Wetterberichte eher langweilig, da mir ein Blick aus dem Fenster verlässlichere Informationen liefert. Also packt mich der Ehrgeiz und als Alternative sollten Tweets angezeigt werden. Das wäre prinzipiell kein großer Aufwand, da man nach Nachrichten suchen kann, die einen gewünschte Hashtag enthalten ohne bei Twitter angemeldet zu sein. Allerdings hat Twitter vor einiger Zeit seine Webseiten auf SSL-Verschlüsselung ("https://") umgestellt, was die Standard-Firmware des ESP8266 nicht beherrscht. Davon abgesehen ist die Authentifizierung für die Twitter-API deutlich aufwändiger geworden. Was man bräuchte, wäre eine Webseite, die bei Twitter eine Suche durchführt und das Ergebnis auf einer unverschlüsselten ausgibt. Das gibt es leider nur als kostenpflichtige Angebote. Ein Idee wäre, einen Raspberry Pi als Hacking-Werkzeug für SSL- und Man-in-the-Middle-Angriffe zu benutzen, wie in c't 10/2016 vorgestellt. Einfacher erschien es mir, ein kleines PHP-Script auf einem privaten Server laufen zu lassen. Das Skript kann per URL aufgerufen werden und liefert den neuesten Tweet mit dem als Parameter angegebenen Suchbegriff.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Twitter</title>
</head>

<body>
<pre><?php // wichtig, dass direkt nach <pre> ohne Zeilenumbruch

$q = ($_GET["q"]);
$q = "https://twitter.com/search?f=tweets&vertical=default&q=%23" . $q;
// nur Tweets, nur mit "#"
//echo $q;

$file = @fopen($q, "r");
if ($file)
{
while ((($buffer = fgets($file)) !== false) && (strpos ($buffer,
"js-tweet-text tweet-text") == false))
{
//echo htmlspecialchars($buffer,ENT_QUOTES);;
}
fclose($file);
}

$buffer = trim( htmlentities (strip_tags($buffer),ENT_QUOTES,'UTF-8'));
// " => &amp;quot;
$buffer = str_pad ($buffer, 70); // mit Blanks füllen
$buffer = html_entity_decode ($buffer, ENT_QUOTES, ISO-8859-1); //
&amp;quot; => &quot;
$buffer = html_entity_decode ($buffer, ENT_QUOTES, ISO-8859-1); //
&quot; => "
echo $buffer;

?>
</pre>

</body>
</html>

Als maßgeschneiderte Lösung kümmert es sich gleich noch um die Konvertierung des Zeichensatzes von UTF-8 nach ISO 8859-1 und eliminiert alle anderen Inhalte, die von Twitter geliefert werden, bis auf den Text. Die Lösung ist leider nicht universell und erfordert einen eigenen Server mit PHP. Die Auswertung und Anzeige des Tweets ist danach um so einfacher und ähnelt dem Prinzip, das schon für die Wetterdaten genutzt wurde.

Als Besonderheit gibt es die Möglichkeit, den zu suchenden Hashtag zur Laufzeit einzugeben. Dazu kann man mit dem Nunchuck die einzelnen Buchstaben durchgehen und so ein neues Wort eingeben.

Exemplarische Ausgabe eines Tweets durch den PHP-Parser

Als Inspirationsquelle können Sie sich den Sourcecode für diese Beispiele herunterladen und an Ihre eigenen Bedürfnisse anpassen. Teilweise sind Anpassungen notwendig, wie zum Beispiel die Logindaten fürs WLAN, den API-Key für Wetterberichte oder der Pfad zu einem Server auf dem Sie das PHP-Skript laufen lassen.

Download Sourcecode für Arduino (fls)