twttrshot.de

Im Rahmen einer Wochenendbastelei habe ich twttrshot.de geschrieben, ein kleiner Service der vollautomatisch Tweets in Bilder umwandelt.

Dazu kann man wahlweise auf der Webseite einen Link zum Tweet in ein Eingabefeld einfügen und mit einem Klick auf “Erstellen” wird das Bild erzeugt, das man dann speichern oder irgendwo einbetten kann. Alternativ kann man in einem Link zu einem Tweet aber auch einfach das “twitter.com” durch “twttrshot.de” ersetzen und erhält dann direkt ein Bild zurückgeliefert.

Aus https://twitter.com/jack/status/20 wird also https://twttrshot.de/jack/status/20 und das folgende Ergebnis:

Das ist übrigens der erste Tweet, der je veröffentlicht wurde, aber das nur am Rande.

Wie funktioniert das Ganze?

Das Ganze war eine kleine Übung um mich mal mit Headless Browsern, also der Nutzung von Browsern ohne Oberfläche auseinander zu setzen. In diesem Beispiel existiert eine Vultr-Instanz die einen Chrome-Browser, der hat einfach das beste Rendering-Ergebnis und Firefox habe ich bisher nicht zum Laufen gebracht, aufruft und diesen einen Screenshot einer Seite anfertigen lässt.

Die Seite ist dabei eine schlichte HTML-Seite deren Code mittels des Embed-Tools von twitter erstellt wird. Dem übergibt man eine Tweet-URL und erhält eine JSON-Ergebnis vom Tweet. Etwas doof dabei: Zeilenumbrüche werden aus irgendeinem Grund von twitter nicht mit ausgeliefert.

Der Screenshot wird dann mittels Imagemagick zunächst auf sein Endformat beschnitten, anschließend wird wieder eine definierte Menge Weißraum hinzugefügt. Das ist ein kleiner Workaround, denn man weiß zwar wie breit ein Tweet ist, aber nicht wie lang bzw. hoch. Also wird zunächst ein Screenshot mit 2000 Pixel Höhe erzeugt und dann, wie beschrieben, zugeschnitten. Das fertige PNG wird mittels optipng noch optimiert, um die Dateigröße zu verringern.

Die Daten werden dann auf den Server hinter twttrshot.de übertragen, um von dort ausgeliefert zu werden. Damit dauert der erste Aufruf eines Tweets einen Moment, jeder weitere Aufruf sollte allerdings zügig funktionieren.

Als “Sicherheitsfeature” ist auch integriert, dass geprüft wird, ob der Tweet überhaupt noch existiert und das Bild ggf. gelöscht wird. Zwar wäre es gerade für die Archivierung von gelöschten Tweets interessant, wenn dieser Service keine Bilder löschen würde, damit läuft man allerdings auch Gefahr als Mirror für rechtswidrige Inhalte zu fungieren. Um hier die Angriffsfläche klein zu halten, werden die Bilder von gelöschten Tweets also ebenfalls gelöscht.

Stellt sich noch die Frage: Wofür ist das gut?

Nun, da kann man sich mehrere Einsatzzwecke vorstellen. Ich sehe hier vor allem die Möglichkeit, Tweets ohne Datenschutzprobleme einzubinden. Es werden keinerlei Daten oder Scripte von twitter geladen, sämtliche Kommunikation findet mit einem Server in Deutschland statt, der keine Statistiken erzeugt oder sonstwie personenbezogene Daten erhebt. Und die Optik der Tweets ist dabei möglichst nah am Original ohne dafür viel Aufwand zu betreiben. Ich möchte fast behaupten, einfacher als die URL zu ändern ist das Ganze kaum zu machen.

Wer möchte, kann mithilfe dieses Services aber auch sein eigenes Bildarchiv von Tweets erstellen. Alles mitloggen was der amerikanische Präsident so twittert oder sowas zum Beispiel. Ich denke der Fantasie sind kaum Grenzen gesetzt und ich will da auch keine auferlegen.

Viel Spaß damit!

Bild im Header: Con Karampelas on Unsplash