seek&tweet – Webcrawling Twitter-Bot

Java-Twitter-Bot mit WebGUI
Privatprojekt, 2013-2014, ab 2016

seek&tweet 0.1a webGUI als App im Synology Disk Station Manager

Für das Projekt seek&tweet kamen neben Java auch Elemente aus HTML5, CSS3, JavaScript, XML und CMS im Allgemeinen zum Einsatz. Die Anwendung ermöglicht es Internetseiten in festgelegten Zeitabständen auf neue Inhalte zu durchsuchen und diese über einen bzw. mehrere verbunde Twitter-Accounts zu twittern. Über ein browserfähiges webGUI kann der User „Tweetquellen“ erstellen, die URL-Seiten herunterladen und den HTML-Code nach vorgegeben Such- und Bearbeitungskriterien als Tweet ausgeben.

Die Anwendung ist für NAS und ähnliche Systeme mit permanentem Internetanschluss und Javainstallation entworfen. Sie läuft im Hintergrund und lässt sich über den integrierten Webserver via Browser Webinterface steuern. Hier kann der Nutzer mehrere Twitter Accounts mit dem Twitter Bot verbinden und diverse Tweetquellen definieren. Dabei können neben der URL einer Datenquelle auch Eigenschaften für den HTTP Request wie den User agent oder den Timeout festlegen.

Programmstruktur, Profile und Plugins

Die Anwendung besteht im Kern aus zwei wesentlichen Bestandteilen. Zum einen, aus dem sogenannte „Core“, der die verschiedenen Abläufe steuert und das (XML-)Content Management übernimmt. Zum Anderen aus einem integrierten Webserver, der das Backend der Webschnittstelle darstellt. Beide Programmteile arbeiten unabhängig voneinander und kommunizieren über eine eigens entwickelte Schnittstelle miteinander. So besteht für zukünftige Versionen auch die Möglichkeit auch andere Clients, beispielsweise eine Smartphone-App zur Nutzung der Anwendung zu implementieren.

Zur Nutzung des Programms muss der Nutzer zunächst einen Twitter Account mit der Anwendung verbinden. Hierzu nutzt seek&tweet das OAuth-Verfahren der offiziellen Twitter API. Im nächsten Schritt kann der Nutzer nun verschiedene Quellen für das erstellte Profil erstellen. Momentan unterstützt seek&tweet hierbei zwei mögliche Methoden:

  • Webcrawling
    Bei der Methode des Webcrawling können Internetseiten durch verschiedene Methoden analysiert werden. Die so generierten Ergebnisse können dann zu festgelegten Zeitpunkten über das angebundene Twitter Profil getwittert werden. Ein Abgleich mit bereits versendeten Nachrichten verhindert hierbei das mehrmalige versenden eines Tweets. Weitere Details in Webcrawling Methodik.
  • Retweeting
    Hier können bereits bestehende Tweets nach definierbaren Kriterien gesucht werden und zu den definierten Zeitpunkten über den verbunden Twitter Account „retweeted“ werden. Die Suche basiert auf der Search API von Twitter.

Plugins

Um mehrmals genutzte Suchabläufe nicht jedes mal erneut im Detail festlegen zu müssen, hat der Nutzer die Option bereits vorgefertigte Plugins zu nutzen oder auch neue Plugins zu erstellen. So kann die aufgerufene URL mit Variablen Keywordsschneller und vor allem effektiver auf (Struktur-)Änderungen der analysierten HTML-Seiten reagiert werden.

Webcrawling Methodik

Webcrawler Methode

Die Funktionsweise, wie die einzelnen Tweets durch die angesprochenen Plugins zusammengestellt werden, lässt sich im Groben an der Abbildung erläutern. Der Bot liest die Webseite mit den zu twitternden Inhalten ein, sucht durch die Plugins bestimmte HTML Elemente ein und kann aus deren Attributen und Inhalten jeweils einen Titel, eine Nachricht und einen Link extrahieren, die dann zu einem Tweet zusammengestellt werden.

Weitere Features

  • Ausführliche Statistiken zu Datenvolumen, Tweets & Retweets
    • Einheit MB/tweet – heruntergeladene MB pro versendetem Tweet
  • Archivierung versendeter Nachrichten und Fehlerbenachrichtigungen der Twitter-API
    • Löschen von Nachrichten aus der Twitter Timeline (und lokalem Archiv)
  • Logging mit Level Optionen

Geplante Weiterentwicklungen

  • Erweiterte Plugin-Funktionalität
    • Live-Ticker Support
    • Automatische Erkennung von HTML-Strukturänderungen und Benachrichtigung des Nutzers bei Änderungen
    • Website-Cache zur Verringerung des heruntergeladenen Datenvolumens
  • Umstellung von XML auf JSON
  • Smartphone WebApp – Client

Englischsprachige Projektseite