Kategorien
Analytics API Apps Soziale Netze

Hashtags in Tweets mit dem Tag Explorer untersuchen #TAGS

In den letzten Monaten habe ich immer mal wieder grafische Auswertungen von Tweets gesehen, die sich auf den Hashtag einer Veranstaltung bezogen. In den Auswertungen konnte man Verbindungen zwischen einzelnen Accounts sehen und vieles mehr. Hinter den meisten Auswertungen steckt Oliver Ewinger (@ewingo13) und letzte Woche erklärte er in einer Online Session im Rahmen eines Barcamps (#lllcamp) wie das funktioniert.

Diese Auswertungen können für jeden Twitter Hashtag gemacht werden. Es ist meines Erachtens sehr interessant die Vorgehensweise zu sehen, da heute viel über Auswertungen öffentlicher Daten gesprochen wird, es aber oft nicht einfach ist, sowas an einem einfachen Beispiel anschaulich nachzuvollziehen – und, was eigentlich das Interessanteste ist, selbst mal mit diesen Daten zu “spielen”.

In diesem Beitrag beschreibe ich wie solche Auswertungen erstellt werden und bedanke mich nochmal bei Oliver für seine gute Einführung.

Kategorien
Allgemein Services Shared Hosting Wunschthema

Die Sache mit der Zählerei

Wer irgendetwas irgendwo postet, möchte meistens auch wissen ob das jemand liest, schliesslich hat er oder sie ja Zeit, Talent, Kreativität und viel Hirnschmalz in den Beitrag investiert, vielleicht sogar Geld.
Zählen ist aber gar nicht so einfach. Zunächst ist es ein grosser Unterscheid, ob etwas „aus Leidenschaft“ passiert oder ob ein „Budget“ benötigt wird. Der leidenschaftliche Poster freut sich vermutlich über Anerkennung, steht aber meist über der Erbsenzählerei von Zugriffszahlen. Es geht „um Wichtigeres“.
Alle anderen, nicht ganz so leidenschaftliche Menschen, werden aus unterschiedlichen Gründen durchaus mal nach Zugriffszahlen ihrer Beiträge gefragt. Und genau an diesem Punkt stellt man fest, dass es gar nicht so einfach ist, eine Antwort auf diese doch so einfache Frage zu geben.

Kategorien
Content Management Systeme Shared Hosting Webdesign Wunschthema

Ein selbstgehostetes Twitter Archiv mit WordPress

Wenn du in sozialen Netzwerken Nachrichten, Fotos und Videos postest, sammeln sich über die Jahre eine Menge Einträge an. Ohne gleich an die konkrete Datenapokalyse zu denken, wünscht man sich doch manchmal eine Art Backup oder ein Archiv seiner Daten. Wer mal die Suchfunktion von Twitter bemüht hat um eigene Tweets zu durchsuchen, kann ein Lied davon singen.

Konkreter Anlass für das nachdenken über Twitter Archiv war bei mir war die „Blockierung“ eines Twitter Users seitens Twitter, den ich für unser kleines Blog Projekt erstellt hatte und der wöchentlich eine Zusammenfassung der Blogeinträge postete. Grund der Sperrung war die Tatsache, dass der Geburtstag des Twitter Users nicht oder falsch ausgefüllt war. Im Ergebnis sind alle Tweets nun „weg“ (Die gesamte Geschichte findest du hier: ).

Zurück zum Archiv. Ich dachte mir, dass es doch möglich sein müsse, per Twitter API die Tweets des eigenen Users auszulesen und als Posts in einer WordPress Installation zu speichern. Die Tweets wären dann auch bei einer versehentlichen Sperrung noch lesbar und das Problem der Suche wäre obendrein ebenfalls gelöst.

Kategorien
Allgemein News Soziale Netze

Du Besucher, du!

In den letzten Wochen kam bei einem internen Chat die Frage auf, ob wir hier im Blog Sie, den Besucher, eigentlich mit Sie oder Du anreden wollen.
Die Frage hört sich einfach an, eine Antwort ist aber gar nicht so einfach. Beide Anredeformen haben ihre Vor- und Nachteile.
Nach ausgiebiger Diskussion haben wir uns entschlossen dich, lieber Besucher dieses Blogs, zu duzen!

Wir, das sind übrigens Michael und Hagen und diese beiden wunderbaren Fotos stammen aus unseren privaten Social Network Accounts .
Du siehst also – wir meinen es ernst 🙂 !

Michael Brunner
Michael Brunner

Hagen Graf
Hagen Graf

Übrigens Social Networks: Damit du (und jetzt Luft anhalten und lächeln) „noch besser“ verfolgen kannst, was wir hier bei NovaTrend und auch auch sonst so treiben, hier unsere Twitter Accounts! Und damit gleich klar ist, wo das hinführt: Wenn du uns folgst, werden wir dir auch folgen 🙂


tl;dr: Wir reden jetzt alle mit „Du“ an

Kategorien
seafolly.ch Soziale Netze

Die Twitter API – einfach Tweets auslesen und weiterverarbeiten

Unser Kunstprojekt seafolly.ch hat einen Twitter User und ich wollte die Tweeterei irgendwie teilautomatisieren. Dazu probierte ich IFTTT aus (Ein Automat für #kunstprojekt) und das Ergebnis war schon beeindruckend. Der Haken an Services wie IFTTT ist, dass „nur“ vordefinierte Funktionen zur Verfügung stehen. Und wenn mir die nicht ausreichen oder ich einen anderen Anwendungsfall habe, dann geht es eben nicht.

Aber wie könnte man das anders machen?

Twitter API

Twitter bietet eine Schnittstelle (API) an, auf die man mit unterschiedlichen Programmiersprachen zugreifen kann. Man kann Daten abfragen, auf dem eigenen Server verarbeiten und dann damit „machen, was ich will“.
Die Anzahl der Zugriffe auf die Twitter API ist beschränkt, reicht jedoch für unsere Anforderungen aus.

We divide the rate limit window into 15 minute chunks per endpoint, with most individual calls allowing for 15 requests in each window. In most cases, you can query the API on a per endpoint basis more than the v1 API, and other widely used calls have been increased to 180 requests per window.
Twitter API Dokumentation

Das Prinzip dahinter: Kleinere Zugriffsmengen sind kostenlos, grössere nicht.

Damit das kontrolliert werden kann, muss man sich mit seinem Twitter User entsprechend registrieren.

Früher war das alles mal einfacher, da konnte jeder öffentlich Anfragen an Twitter stellen und erhielt Daten zurück (wie sich twitter mit der twitter-api 1.1 einigelt).
Als freie Alternative zu Twitter gibt es beispielsweise pump.io (pump.io – die Basis für dezentrale soziale Netzwerke?).

Die Twitter-API liefert Ergebnisse in XML und JSON Format, ist also grundsätzlich von jeder Programmiersprache aus nutzbar. Meistens werden die Sprachen PHP, Python oder Ruby benutzt.

Ziel

Für den Anfang möchte ich die Tweets von @seafollych auf einer Website einbinden.
Als nächsten Schritt würde ich gern Tweets mit dem Hashtag #kunstprojekt retweeten.

Twitter Account einrichten und App registrieren

Einen Twitter Account habe ich bereits (@seafollych).
Auf der Website https://apps.twitter.com/ muss ich für mein Vorhaben eine Application anlegen. Name und Description (Beschreibung) sind frei wählbar, das Website Feld enthält die URL zum Ihrem Angebot. Ich arbeite auf unserem Testserver.

Twitter App erstellen
Twitter App erstellen

Die Callback URL kann in unserem Fall leer bleiben.
Sie müssen das „Developer Agreement“ bestätigen (und auch lesen) und können dann die Twitter Application erstellen.

Im nächsten Schritt müssen Sie sich Access Tokens erzeugen.

Twitter App Keys and Access Tokens
Twitter App Keys and Access Tokens

Die Keys (Schlüssel) und das Access Token (Zugriffscode) benötigen Sie für Ihre spätere Abfrage um sich gegenüber Twitter zu identifizieren.

Twitter API mit PHP abfragen

Ich nutze als Programmiersprache PHP und eine leere PHP Datei.

PHP-Datei erstellen

Legen Sie in einem Unterverzeichnis Ihrer Wahl eine Datei twitter.php mit folgendem Inhalt an.

<?php
echo "<h2>seafolly.ch Tweets</h2>";
?>

Wenn Sie die Datei in Ihrem Browser aufrufen (z.B. https://serverblogger.ch/seafolly/twitter.php) und den Text sehen, kann es weitergehen.

Twitter API für PHP

Sie benötigen eine passende PHP Bibliothek. Die wohl bekannteste ist die von J7mbo (https://github.com/J7mbo/twitter-api-php/).
Laden Sie sie herunter, packen Sie sie aus und kopieren Sie die Datei TwitterAPIExchange.php in das Verzeichnis, in dem auch Ihre twitter.php Datei liegt.

Das Programm

In Ihrer twitter.php Datei müssen Sie nun folgende Schritte in PHP codiert ausführen.

  1. Twitter API Bibliothek einbinden
  2. Twitter Access Token und Key angeben
  3. Art der Anfrage festlegen
  4. HTTP Methode festlegen
  5. Abfrage starten und die Rückgabe in einem Array speichern
  6. Array durchlaufen und die Tweets ausgeben

Hört sich doch gar nicht so kompliziert an.
In PHP-Code sieht das so aus:

1. Twitter API Bibliothek einbinden

Wenn die Datei im gleichen Verzeichnis liegt, läd die require_once() Funktion die gewünschte Datei.

require_once('TwitterAPIExchange.php');

Twitter Access Token und Key angeben

Die Variable $settings ist ein Array und es werden die vier Werte darin gespeichert

$settings = array(
  'oauth_access_token' => "IHR_WERT",
  'oauth_access_token_secret' => "IHR_WERT"
  'consumer_key' => "IHR_WERT",
  'consumer_secret' => "IHR_WERT"
);

Art der Anfrage festlegen

Man kann unterschiedliche Arten von Anfragen festlegen. In unserem Fall wollen wir die eigene Timeline auslesen. Dazu muss die entsprechende URL in einer Variable gespeichert werden. Zusätzlich speichere ich noch den gewünschten Usernamen in einer Variable um ihn später einfacher nutzen zu können.

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
$username= "seafollych";

HTTP Methode festlegen

Das HTTP Protokoll bietet unterschiedliche Methoden an, GET zum Lesen von Daten und POST zum posten von Daten.
Wir wollen lesen, also GET!

$requestMethod = "GET";

Abfrage starten und die Rückgabe in einem Array speichern

Die Variable $getfield enthält die Daten, die wir an die URL anhängen wollen, damit sie hinterher so aussieht:

https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=seaf…

Der angehängte Teil wird mit folgendem Befehl erzeugt:

$getfield = '?screen_name='.$username.'&count=5';

Für die Abfrage muss ein Objekt erstellt werden.
Wir übergeben dazu den Inhalt der Variable $settings an die TwitterAPIExchange Klasse und speichern das Ergebnis in der Variable $twitter.

$twitter = new TwitterAPIExchange($settings);

Um ein Ergebnis zu erhalten, müssen wir den Text für den URL Anhang, die URL und die Abfragemethode übergeben und dann die Abfrage starten.

$twitter->setGetfield($getfield)
        ->buildOauth($url, $requestMethod)
        ->performRequest()

Das Ergebnis ist ein JSON codierter Textstring, der für das menschliche Auge und PHP ein wenig unhandlich ist ;).
Daher bereiten wir ihn mit der Funktion json_decode() auf und speichern das Ergebnis in der Variablen $string.

$string = json_decode($twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest(),$assoc = TRUE);

Ab hier könnte man sich das Ergebnis schon mal ausgeben lassen, der ganze Code sieht so aus:

<?php
require_once('TwitterAPIExchange.php');

$settings = array(
  'oauth_access_token' => "...",
  'oauth_access_token_secret' => "...",
  'consumer_key' => "...",
  'consumer_secret' => "..."
);

$username= "seafollych";
$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
$requestMethod = "GET";
$getfield = '?screen_name='.$username.'&count=5';
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest(),$assoc = TRUE);

// Test ob ein Fehler vorliegt
if($string["errors"][0]["message"] != "") {
  echo "<h3>Problem</h3>
        <p>Twitter gibt die folgenden Fehlermeldung zurücke</p>
        <p><em>".$string[errors][0]["message"]."</em></p>";
  exit();
}

// Ausgabe
echo "<pre>";
print_r($string);
echo "</pre>";
?>

twitter.php

Die Ausgabe sieht etwa so aus:

Ergebnis der Abfrage
Ergebnis der Abfrage

Offensichtlich haben wir Daten erhalten und müssen diese nun noch formatieren.
Normalerweise macht man das in einer for each Schleife.
Im Antwort-Array hat jeder Tweet eine Nummer. Die Schleife geht Nummer für Nummer durch und speichert alle Daten zu einem Tweet in der Variable $items. Die einzelnen Werte werden dann aus der Variable $items extrahiert. Das Datum habe ich mit einer PHP Funktion umfomatiert date(‚H:i, d.m.Y‘, strtotime($items[‚created_at‘])); und den Text mit der PHP Funktion utf8_decode() bearbeitet, um eine richtige Darstellung der deutschen Umlaute zu erhalten. Der Rest sind HTML Tags. Sie können die Ausgabe beliebig komplex gestalten, meine Variante ist die Minimalversion.

echo "<ul>";
foreach($string as $items){
  echo '<li>';
  echo '<a href="https://twitter.com/';
  echo $items['user']['name'];
  echo '/status/';
  echo $items['id'];
  echo '"><small>';
  $fdate = date('H:i, d.m.Y', strtotime($items['created_at']));
  echo $fdate;
  echo '</small></a>: ';
  echo utf8_decode($items['text']);
  echo '</li>';
}
echo "</ul>";

Wenn Sie das Skript laufen lassen, erhalten Sie die folgende Ausgabe:

per PHP abgefragte Tweets
per PHP abgefragte Tweets

Hier nochmal der gesamte Quellcode:

<?php
require_once('TwitterAPIExchange.php');

$settings = array(
  'oauth_access_token' => "...",
  'oauth_access_token_secret' => "...",
  'consumer_key' => "...",
  'consumer_secret' => "..."
);

$username= "seafollych";
$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
$requestMethod = "GET";
$getfield = '?screen_name='.$username.'&count=5';
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest(),$assoc = TRUE);

// Test ob ein Fehler vorliegt
if($string["errors"][0]["message"] != "") {
  echo "<h3>Problem</h3>
        <p>Twitter gibt die folgenden Fehlermeldung zurücke</p>
        <p><em>".$string[errors][0]["message"]."</em></p>";
  exit();
}

// Ausgabe
foreach($string as $items)
    {
        echo '<li>';
        echo '<a href="https://twitter.com/';
        echo $items['user']['name'];
        echo '/status/';
        echo $items['id'];
        echo '"><small>';
        $fdate = date('H:i, d.m.Y', strtotime($items['created_at']));
        echo $fdate;
        echo '</small></a>: ';
        echo utf8_decode($items['text']);
        echo '</li>';
    }
echo "</ul>";

?>

twitter.php

Wenn Sie bis hier gekommen sind, dann zunächst mal herzlichen Glückwunsch. Das war gar nicht schwer und der Erfolg ist doch ermutigend.

Im nächsten Schritt wollte ich die Twitter nach Tweets mit dem Hashtag #kunstprojekt suchen. Wenn ich einen entsprechenden Tweet finde, will ich ihn posten oder retweeten. Das ist grundsätzlich möglich, sprengt aber doch den Rahmen des Artikels hier.
Daher möchte ich an dieser Stelle erstmal aufhören und Ihnen noch ein paar Links zum weiterstöbern mit auf den Weg geben.

Links:


tl;dr: Tweets per API auslesen und verarbeiten ist nicht schwer