Boehrsi.de - Blog

BoehrsiTweetHub - RSS und GitHub Updates automatisch auf Twitter teilen

Erstellt am event Uhr von account_circle Boehrsi in label Development
BoehrsiTweetHub - RSS und GitHub Updates automatisch auf Twitter teilen Bild

Ende des letzten Monats erhielt ich die Information das IFTTT open_in_new leider die Twitter Integration für kostenlose Accounts deaktiviert. Ein Grund dafür dürfte sicherlich sein das die Twitter API selbst nun kostenpflichtig ist, sobald eine größere Anzahl an Requests benötigt wird. Was auch immer der konkrete Hintergrund dieser Entscheidung ist, für mich war klar das ein kostenpflichtiger Account nicht in Frage kommt. Denn auch wenn ich meine Blog Beiträge gerne via Twitter weiterleite, so ist meine Reichweite dort durchaus beschränkt und dafür Geld zu bezahlen würde sich einfach nicht lohnen.
Allerdings bin ich nun mal Softwareentwickler, habe einen Server und falls mal etwas nicht funktioniert überlege ich natürlich selber eine Lösung zu entwickeln. Schnell gedacht und tatsächlich auch schnell gemacht, denn am letzten Wochenende implementierte ich meine eigene Twitter Posting Lösung. Selbige unterstützt neben konfigurierbaren RSS Feeds nun auch GitHub Releases.

Mein BoehrsiTweetHub Tool ist in Dart geschrieben. Auf diese Weise kann ich so schnell und flexibel entwickeln wie mit einem Shell Script, habe aber die Vorteile einer vollwertigen typisierten Programmiersprache. Außerdem kann ich Binary Dateien für jegliche Plattformen erstellen und so auf die Installation einer Programmierumgebung auf meinem Server verzichten.
Da ich bereits Command-Line-Apps mit Dart entwickelt habe, fiel mir der Einstieg sehr leicht. Für Neueinsteiger gibt es hier auch einen offiziellen Guide open_in_new zum Thema. Ich persönlich nutze gerne das args open_in_new Package, um Eingabeparameter zu verarbeiten. Für mein Tool habe ich z.B. einen Dry-Run Parameter hinzugefügt, welche es mir erlaubt die Ausführung zu testen, ohne das ein Post auf Twitter erstellt wird.
Ansonsten nutze ich das http open_in_new Package für HTTP Requests, damit ich die entsprechenden Daten von der GitHub API bezüglich Releases abfragen kann und auch die RSS Feeds werden darüber geladen. Um selbige verarbeiten zu können ist das xml open_in_new Package ebenfalls dabei. Das Daten Abfragen und Verarbeiten war relativ einfach, lediglich ein paar Formatting Probleme beim RSS Feed Datum musste ich aus der Welt schaffen. Ansonsten nutze ich das twitter_api_v2 open_in_new Package, denn Twitter hat einen durchaus komplexen Authentifizierungsmechanismus, welchen ich nicht mit normalen HTTP Requests nachbauen wollte. Mit den json_annotation open_in_new und json_serializable open_in_new Packages lese und schreibe ich JSON Configs, um einstellen zu können welche Feeds und Repositories relevant sind, ohne das ganze Tool neu bauen zu müssen.
Die Entwicklung war an einem Tag abgeschlossen, allerdings dauerte es quasi noch einmal genau so lange bei GitHub open_in_new und vor allem bei Twitter open_in_new die entsprechenden Entwickleraccounts zu erhalten und herauszufinden welche Daten und Berechtigungen ich konkret brauchte. Nachdem auch dies erledigt war konnte ich das Tool problemlos produktiv nutzen. Bis dato führe ich es manuell aus, allerdings ist eine fertig gebaute Binary bereits auf dem Server und entsprechend konfiguriert. Ab morgen werde ich das Tool per Cronjob laufen lassen und habe somit quasi die selbe automatische Funktionalität wie zuvor bei IFTTT, nur mit mehr Freiheiten und Support für mehr Plattformen.
Da das Tool explizit für meinen Blog und meine Einsatzzwecke gebaut wurde, ist es aktuell nicht Open Source. Falls eurerseits Interesse besteht meldet euch gerne in den Kommentaren, sofern sich einige Nutzer melden würde ich das Ganze noch etwas umbauen und den Code auf GitHub stellen.

Für mich hat sich ein weiteres mal die Vielseitigkeit von Dart gezeigt. Die Entwicklung ist unkompliziert und man fühlt sich meistens sehr produktiv. Die Möglichkeit Binary Dateien direkt zu bauen ist ebenfalls sehr viel wert. Dies kombiniert mit der Vielzahl an Libraries die einem das Leben einfach machen, bestätigt mir ein weiteres Mal das es eine durchaus gute Wahl war im Dart / Flutter Bereich einzusteigen. Falls ihr Fragen zu meinem Tool oder zu meiner Nutzung von Dart / Flutter habt, meldet euch gerne direkt in den Kommentaren.

Related Links
Kommentare  
Kommentar erstellen
Mit dem Abschicken des Kommentars erklären sie sich mit der in der Datenschutzerklärung dargelegten Datenerhebung für Kommentare einverstanden. Spam, unangebrachte Werbung und andere unerwünschte Inhalte werden entfernt. Das Abonnieren via E-Mail ist nur für E-Mail Adressen erlaubt die Sie rechtmäßig administrieren. Widerrechtliche Abonnements werden entfernt.