Vor ein paar Wochen habe ich hier im Blog unser seafolly.ch Projekt angekündigt und wurde dann tatsächlich von mehreren Leuten darauf angesprochen. Bevor wir uns auf die Technik von seafolly.ch stürzen, einen Server aufsetzen und den Kunstmarkt revolutionieren, will ich die Zeit nutzen und mit den bereits existierenden Services experimentieren.
#kunstprojekt
seafolly.ch hat hat ausser dem Domainnamen bereits Benutzerkonten bei Twitter, Instagram, Pinterest und Facebook. Eine Idee, die ziemlich schnell entstand, war, diese Benutzerkonten automatisiert mit Informationen zu Kunstprojekten zu versehen. Wenn man sich für Kunstprojekte interessiert, dann sucht man vermutlich zunächst bei Google nach dem Begriff „Kunstprojekt“, dann bei Twitter, Instagram und Pinterest nach dem hashtag „#Kunstprojekt“ und vielleicht noch bei Facebook.
Eine grosse Herausforderung dabei ist die Sprache. Also suche ich nach dem deutschen Begriff „Kunstprojekt“ oder auf English nach „art project“ oder gar französisch nach „projét d’art“. In der Schweiz ist italienisch „progetto artistico“ wichtig und sehr schnell kommt man vom Hundertsten zum Tausendsten. Wenn wir etwas automatisieren wollen, muss es für alle Sprachen funktionieren.
Wie das oft so ist, habe ich beim Suchen auch nach „Kunscht“ gesucht und tatsächlich das Schweizer Projekt „Kunscht us dr Umgäbig“ gefunden. Von hier aus viel Erfolg, die Idee ist gut!
Da das Serverblogger-Blog auf Deutsch erscheint, habe ich beschlossen, zunächst den deutschen Begriff „Kunstprojekt“ zu verwenden.
Automaten
Um einen Prozess zu automatisieren, benötigt man einen Automaten. Der „beobachtet“ 24 Stunden pro Tag und 7 Tage die Woche und reagiert bei Bedarf. Bei einem Server handelt es sich um so einen Automaten. Der Apache Webserver macht nicht anderes als 24/7 zu lauschen, ob jemand eine Webseite ausgeliefert haben möchte. Er reagiert aud das Protokoll HTTP und wenn jemand etwas von ihm haben will, muss er das Protokoll einhalten.
Wenn Sie in Ihrem Browser http://seafolly.ch eingeben, schickt der Browser diese Befehle an die IP-Adresse und somit an den Server, der mit dem Domainnamen verbunden ist. Das sieht das so aus:
POST / HTTP/1.1 Host: seafolly.ch Accept: */* Content-Type: text/html Content-Length: 0
Momentan erscheint folgende Antwort in HTTP
HTTP/1.1 200 OK Date: Wed, 01 Jul 2015 10:53:06 GMT Server: Apache/2.2.22 (Debian) Last-Modified: Mon, 06 May 2013 06:51:57 GMT ETag: "3c0014-b1-4dc0723011d40" Accept-Ranges: bytes Content-Length: 177 Vary: Accept-Encoding Content-Type: text/html X-Pad: avoid browser bug
Und als HTML dann das hier
<html><body><h1>It works!</h1> <p>This is the default web page for this server.</p> <p>The web server software is running but no content has been added, yet.</p> </body></html>
Die Domain ist momentan mit einer Art Testserver verbunden, die genau diese eine Seite ausliefert.
Warum erzähle ich das?
Dienste wie Webserver gibt es schon sehr lange und das einfache Prinzip dahinter ist immer: Wenn dich jemand fragt (Client), dann antworte (Server). In unserem Fall muss ein Besucher expliziert eine Seite anfordern, die dann ohne Murren vom Webserver ausgeliefert wird.
Wenn ich für seafolly nun automatisiert auf Ereignisse wie die Erwähnung des Hasttags #kunstprojekt reagieren will, dann muss der Server in die Rolle des Clients schlüpfen und regelmässig bei allen relevanten Diensten nachfragen, ob etwas passiert ist. Wenn etwas passiert ist, dann tut er etwas, wenn nicht, dann eben nicht (if this, then that). Das Prinzip hört sich sehr einfach an, ist in der Realität aber gar nicht so einfach umsetzbar.
IFTTT
Da seafolly.ch noch keinen Root Server hat, schlage ich vor, wir machen ein paar Trockenübungen.
Der kostenlose Dienst IFTTT (http://ifttt.com) bietet genau das an, was wir benötigen. Wenn etwas passiert wird etwas ausgeführt. Alle 15 Minuten schaut IFTTT nach, ob etwas passiert ist.
Zum Hashtag #kunstprojekt gibt es tatsächlich mehr als 4000 Fotos auf Instagram.
Unser erstes Ziel ist also:
Immer wenn jemand auf Instagram ein Foto postet, das den Hashtag #kunstprojekt enthält, dann soll ein Tweet mit Link zu diesem Foto gepostet werden.
Ich lege ein Benutzerkosto seafollych auf ifttt.com an und verbinde das Twitter und Instagram Konto mit dem Service.
Dann erstelle ich ein entsprechendes „Rezept“. Die Bedienung ist weitgehend selbsterklärend.
Als Text für den Tweet wähle ich
Ein #kunstprojekt {{Caption}} von {{Username}} {{Url}}
und nun schaut IFTTT etwa alle 15 Minuten nach, ob dieses Ereignis eingetreten ist.
Pro Hashtag müsste ein Rezept erstellt werden. Das Sprachenproblem wäre damit schon mal gelöst.
Bei der Twittersuche lässt sich auch so ein Rezept erstellen:
Die Ereignisse und Aktionen dieser Rezepte sind vordefiniert. Es gibt vermutlich Millionen von Kombinationen und es ist interessant die Möglichkeiten zu entdecken. Im Twitter Rezept ist es beispielsweise so, das man nicht so einfach einen Tweet mit einem Hashtag retweeten kann. Man kann nur die Variablen für Benutzername und Text neu tweeten. Bei mir sieht das so aus:
. {{UserName}}: {{Text}}
Als Test poste ich mal ein auf meinem Account ein Instagram Bild und es funktioniert tatsächlich :). IFTTT bemerkt das Foto und tweeted!
Ein #kunstprojekt Don’t worry, this is only a test #kunstprojekt von hagengraf http://t.co/7aJRY3YdPL
— seafolly.ch (@seafollych) July 1, 2015
Allerdings muss ich noch etwas am Text ändern, sonst erscheint der Hashtag doppelt.
Prompt wurde auch das zweite Rezept ausgeführt, denn es gab ja nun einen Tweet mit dem Hashtag.
. seafollych: Ein #kunstprojekt Don’t worry, this is only a test #kunstprojekt von hagengraf http://t.co/7aJRY3YdPL
— seafolly.ch (@seafollych) July 1, 2015
Auch hier muss der Text noch verbessert werden, denn der Benutzername erscheint ohne das führende @ Zeichen. Der Benutzer erhält dadurch keinen Hinweis, dass ich sein Posting erwähne.
Ausserdem sollte unser Tweet natürlich nicht geretweeted werden, weil wir sonst eine Endlosschleife erzeugen.
Ich ändere also den Instagram Rezepttext und nehme den statischen Hashtag wieder raus.
{{Caption}} von {{Username}} {{Url}}
Dem Twitter Rezepttext füge ich ein @ hinzu
. @{{UserName}}: {{Text}}
und dem Twitter Suchstring füge ich ein -seafollych hinzu, damit nur Tweets angesprochen werden, die nicht vom Benutzer seafollych stammen.
#kunstprojekt -seafollych
und mache einen weiteren Versuch.
Nun ist alles wie gewünscht. Das Instagram Foto wird getweetet, unser Tweet jedoch nicht
And another test #kunstprojekt von hagengraf http://t.co/lUcXti2KZg
— seafolly.ch (@seafollych) July 1, 2015
Falls Sie einen Instagram oder Twitter Account haben, nutzen Sie doch mal den Hashtag #kunstprojekt.
Sie landen dann auf der #kunstprojekt Liste 🙂
Mittlerweile erscheinen täglich ein paar #kunstprojekt Tweets auf @seafollych. Hier die Live Übersicht:
Links
Zusammenfassung
An den heutigen „Fingerübungen“ sehen Sie, dass es einfach möglich ist, automatisiert Ereignisse zu bemerken und darauf zu reagieren. Die Sache hat allerdings einen grossen Haken. Momentan sind wir abhängig von einem Service auf den wir keinen Einfluss haben und können die Ereignisse nicht selbst definieren.
Aber dazu später mehr, wenn wir unseren eigenen seafolly Server haben 🙂
tl;dr: Unser Kunstprojekt seafolly.ch macht erste Schritte mit Ereignissen und Aktionen in sozialen Medien.
Schreibe einen Kommentar