seeseekey.net - Invictus Deus Ex Machina

Bei der gestern vorgestellten Twitter-Bibliothek bemerkte ich nach einigem Testen ein Problem. Folgender Quellcode:

var twitter=new TinyTwitter.TinyTwitter(oauth);
twitter.UpdateStatus(".");
twitter.UpdateStatus("..");
twitter.UpdateStatus("..");
twitter.UpdateStatus("....");
twitter.UpdateStatus(".....");

funktionierte nicht wie gewünscht. Anstatt auf Twitter diese fünf Tweets angezeigt zu bekommen, schaffen es nur die ersten zwei Tweets durch die API. Das Problem ergab sich hierbei daraus das sich die .NET Framework-Methode HttpWebResponse.GetRequestStream einfach aufhängte bzw. nicht mehr reagierte. Problematisch daran ist, das man als Entwickler keine Rückmeldung bekommt, warum das ganze schief läuft. Nach einiger Recherche stellte ich dann fest, das HttpWebResponse.GetRequestStream nur dann erneut aufgerufen werden darf, wenn der vorherige Aufruf der Methode abgeschlossen ist. Im Falle der TinyTwitter Bibliothek, habe ich das Problem durch Aufruf der Methode Abort (nachdem die angefragten Informationen angekommen sind) im HttpWebResponse–Objekt gelöst.

Die meisten Bibliotheken welche Zugang zur Twitter-API in C# (.NET/Mono) bereitstellen haben ein Problem. Sie sind schlicht zu groß. Meist bestehen sie aus einem dutzend Bibliotheken und werden mit der Zeit immer unhandlicher. So war auf der Suche nach einer leichtgewichtigen Bibliothek für den Zugriff auf das Twitter-API. Fündig wurde ich mit TinyTwitter.

TinyTwitter auf GitHub

Diese Bibliothek besteht im Kern aus einer Datei und lässt sich einfach verwenden. Um einen Tweet zu senden, recht folgender Code:

var oauth = new OAuthInfo
{
    AccessToken = "YOUR ACCESS TOKEN",
    AccessSecret = "YOUR ACCES SECRET",
    ConsumerKey = "YOUR CONSUMER KEY",
    ConsumerSecret = "YOUR CONSUMER SECRET"
};

var twitter = new TinyTwitter(oauth);

twitter.UpdateStatus("I'm tweeting.");

Zu finden ist die Bibliothek auf GitHub. Lizenziert ist TinyTwitter unter der Apache Lizenz und damit freie Software.

Es gibt Dienste auf deren Ankunft haben wir nur gewartet. Einer dieser Dienste ist sicherlich First Tweet — welcher in Verbindung mit Twitter-API das erste Aufkommen eines Tweets ermittelt.

First Tweet an einem Beispiel

Mit dem Dienst ist es möglich nachzuvollziehen, ob es sich bei einem bestimmten Tweet um ein Original handelt, oder ob der Tweet an anderer Stelle bereits aufgetreten ist. Ausprobiert werden kann der Dienst unter ctrlq.org/first/.

In der Wikipedia kann man sich anonym an der Erstellung und Verbesserung von Artikeln beteiligen. Problematisch wird das ganze nur dann wenn bestimmte Interessengruppen versuchen, einen Artikel zu ihren Gunsten zu beeinflussen.

Der Bundesedit Twitter-Account

Für einen Fall dieses Problem gibt es mit Bundesedit eine Lösung. Dabei handelt es sich um einen Twitter-Bot welcher anonyme Änderungen aus der Wikipedia, welche aus dem Netz des Bundes geschehen sind, twittert und sie damit für die Öffentlichkeit nachvollziehbar macht. Neben dem Twitter-Account @bundesedit, gibt es mittlerweile auch @euroedit und @landesedit. Die offizielle Seite des Projektes ist unter anderem unter bundesedit.de zu finden.

Ich hatte vor einiger Zeit einen Status-Bot für Twitter geschrieben. Dieser Bot schaut ob eine Bedingung erfüllt ist und twittern dann einen Satz wie:

Die Tür ist offen.

Wenn die Bedingung sich wieder ändert, könnte der Bot:

Die Tür ist zu.

twittern. Allerdings gibt es da ein Problem. Twitter lässt doppelte Tweets innerhalb einer bestimmten Zeitspanne (Gerüchten zu folge — eine Woche) nicht zu. Damit muss sich der Status-Bot etwas ausdenken wenn er die gleiche Nachricht öfters verschicken möchte. Wenn man dieses Verhalten von Twitter nicht kennt, wundert sich warum der Tweet nicht abgeschickt werden kann. Die einfachste Möglichkeit ist es hier einfach einen Zähler in den Tweet einzubauen. Alternativ kann man die gleiche Nachricht natürlich in unterschiedliche sprachliche Konstrukte packen.

Wenn man Tweetping das erste Mal öffnet, fühlt man sich an die Weltkarte aus einem Film erinnert in welchem jeden Moment die Welt untergeht.

Tweetping mit Weltkarte und Infofenster

Mittels Tweetping kann man Twitter in Echtzeit verfolgen. Es zeigt dabei für die einzelnen Kontinente die aktuellen Tweets an und blendet für jeden neuen Tweet einen weiteren Punkt auf der Weltkarte ein. Daneben gibt es noch Statistiken welche ebenfalls in Echtzeit aktualisiert werden. Zu finden ist Tweetping unter tweetping.net.

Bei Tweepy handelt es sich um eine freie unter der MIT-Lizenz lizenzierte Twitterbibliothek für Python, deren offizielle Webseite unter tweepy.org zu finden ist. Unter anderem wird diese Bibliothek für den Twitter Radiergummi genutzt. Im Gegensatz zu früher hat sich die Installation der Bibliothek etwas verändert. Hierfür sollte man jetzt pip nutzen. Dabei handelt es sich um ein Tool zur Paketverwaltung unter Python. Zur Installation gibt man im Terminal folgendes ein:

curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Damit ist pip installiert und kann genutzt werden:

sudo pip install tweepy

Pip installiert hiermit die Bibliothek Tweety und löst alle Abhängigkeiten auf, so das diese anschließend systemweit genutzt werden kann.

Twister klingt nicht nur wie Twitter, sondern sieht so aus. Bei Twister handelt es sich um eine dezentrale Plattform für Microblogging, ähnlich Twitter. Das ganze basiert dabei unter anderem auf dem Bitcoin-Protokoll und Distributed Hash Tables. Ziel ist es dabei eine Plattform aufzubauen, welche dezentral arbeitet und damit keine Abhängigkeiten zu einen einzelnen Anbieter hat.

Das Webinterface von Twister

Bei dem Protokoll und der Referenzimplementierung handelt es sich um freie Software, welche unter der BSD– und der MIT-Lizenz lizensiert ist. Die offizielle Seite ist auf twister.net.co zu finden. Der Quelltext der unterschiedlichen Implementationen befindet sich auf GitHub.

Einen Server auf seine SSL-Fähigkeiten zu überprüfen ist für den Laien nicht ohne weiteres möglich. Durch das Bash-Skript testssl.sh sieht dies nun anders aus.

testssl.sh in Aktion

Das freie, unter der GPL2 lizenzierte Skript, dient dazu die Sicherheit der SSL-Implementation eines entfernten Servers zu testen. Die Syntax für den Test ist dabei einfach gehalten:

./testssl.sh example.com

Daneben verfügt „testssl.sh“ über weitere Optionen, wie man der Dokumentation entnehmen kann. Dem Autor des Skriptes kann auf Twitter gefolgt werden.

Möchte man in einer .NET respektive Monosprache einen Anwendung schreiben welche mit der Twitter API interagiert, so sollte man hierfür eine Bibliothek nutzen um den Aufwand in Grenzen zu halten.

tweetinvi.codeplex.com

Eine empfehlenswerte Biblitothek in diesem Bereich ist dabei Tweetinvi welche auf CodePlex zu finden ist. Tweetinvi ist dabei unter der Microsoft Public License lizensiert und somit freie Software. Die Bibliothek ist dabei problemlos in der Lage mehrere Millionen Tweets zu verarbeiten und befindet sich in aktiver Entwicklung. Ein einfaches Beispiel um einen Tweet abzusetzen könnte dabei so aussehen:

IToken token=new Token(twitterAccessToken, twitterAccessTokenSecret, twitterConsumerKey, twitterConsumerSecret);
ITweet tweet=new Tweet(tweetText, token);
bool success=tweet.Publish();

Damit hätte man den ersten Tweet mit dieser Bibliothek abgesendet.