@rasselzombie, ein ebooks-Bot

@rasselzombie, ein ebooks-Bot

Diesen Beitrag schrieb ich 6 Jahre und 1 Monat zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

Ich muss vorwegnehmen, dass der Twitter-Account @rasselzombie inzwischen nicht mehr existiert; daher habe ich alle Links entfernt. Den Artikel lasse ich der Vollständigkeit halber aber trotzdem online.

Mit @rasselzombie habe ich mir einen ebooks-Bot gebaut, der bedeutend poetischer, latent schlechter Laune und politisch deutlich unkorrekter ist als mein eigener Account. Er greift auf mein @sys_adm_ama-Twitterarchiv von 2008 bis Januar 2017 zu: das hatte ich heruntergeladen, archiviert und den Account anschließend grundsätzlich bereinigt. Manchmal muss das einfach sein.

Ich bin voll allein.

@rasselzombie 28. Januar 2017

Der @rasselzobie-Bot läuft auf meinem Server; machmal vergesse ich ihn zu starten, dann ist er ein paar Tage still. Ganz wie ein Großer halt! Beginnen wir die Einrichtung des Bots, indem wir das Twitter-Archiv unseres bestehenden Accounts anfordern (Twitter-Webseite → Einstellungen → Account → Dein Archiv anfordern). Ihr werdet von Twitter eine E-Mail mit einem Download-Link erhalten, und das kann dauern – bei mir mehrere Stunden. In der Zwischenzeit zeige ich euch, wie der Bot unter Debian 8 online gebracht werden kann. Er hat einen eigenen User-Account (rasselzombie) sowie ein eigenes $HOME (/home/rasselzombie) auf dem Server, und als solcher installiert er sich, was er braucht.

Sie reanimieren jetzt ein Twix.

— _@rasselzombie 7. Februar 2017

$ gem install --user-install twitter_ebooks
....
Installing ri documentation for whatlanguage-1.0.6
Done installing documentation for addressable, awesome_print, buftok, coderay, domain_name, engtagger, equalizer, faraday, fast-stemmer, gingerice, highscore, htmlentities, http, http-cookie, http-form_data, http_parser.rb, memoizable, method_source, multipart-post, naught, oauth, pry, public_suffix, rufus-scheduler, simple_oauth, thread_safe, twitter, twitter_ebooks, tzinfo, unf, whatlanguage after 29 seconds
31 gems installed

Ich passe anschließend seine .profile an, so dass der PATH um die Ruby-Geschichten erweitert wird:

$ export PATH=$PATH:/home/rasselzombie/.gem/ruby/2.1.0/bin/

Jetzt wird der eigentliche Bot eingerichtet:

$ ebooks new Rasselzombie
New twitter_ebooks app created at Rasselzombie
$ cd Rasselzombie
$ bundle install --path /home/rasselzombie/.bundle
...
Your bundle is complete!
It was installed into /home/rasselzombie/.bundle

Hach, das wird lustig wenn wir beide tot sind.

— rasselzombie (@rasselzombie) 5. Februar 2017

Hoffentlich ist nun das Twitter-Archiv bereit, denn der kleine Bot muss es nun konsumieren: wir packen das Twitter-Archiv aus – ich habe die Datei tweets.csv in sys_adm_ama.csv umbenannt – und legen die CSV-Datei nach /home/rasselzombie/Rasselzombie/corpus/. Anschließend können wir den Bot mit dem Archiv füttern:

$ ebooks consume corpus/sys_adm_ama.csv
Reading CSV corpus from corpus/sys_adm_ama.csv
Removing commented lines and sorting mentions
Tokenizing 11116 statements and 14927 mentions
1000 tokens
2000 tokens
...
46000 tokens
47000 tokens
Ranking keywords
Top keywords: Ich ich und
Corpus consumed to /home/rasselzombie/Rasselzombie/model/sys_adm_ama.model

Bei der Menge Blaulicht gerade wird mir dann warm.

@rasselzombie 4. Februar 2017

Was der Bot nun natürlich benötigt: einen eigenen Twitter-Account. Wie ihr sowas einrichtet wisst ihr ja schon, da muss ich sicher nichts weiter zu sagen ;) Unter apps.twitter.com müsst ihr anschließend eine Twitter-App erstellen und ihr Read, Write and Access direct messages-Berechtigung zuweisen. (Dummerweise geht das inzwischen wohl nur noch, wenn ihr eine gültige Telefonnummer für den Account hinterlegt.) Unter dem Reiter Keys and Access Tokens findet ihr dann eure Tokens – gleich werden sie benötigt. Nun verpassen wir unserem Bot noch seine Logik:

$ cd /home/rasselzombie/Rasselzombie
$ mv bots.rb bots.rb-ORIG
$ wget https://raw.githubusercontent.com/mispy/ebooks_example/master/bots.rb

Ein gut sitzender BH ist soeben geplatzt.

— _@rasselzombie 25. Januar 2017

Dieses Script muss noch ein wenig angepasst – mindestens müsst ihr einsetzen

  • euren Usernamen,
  • euer Access Token (als bot.access_token),
  • euer Access Token Secret (als bot.access_token_secret),
  • euer Consumer Key (als self.consumer_key),
  • euer Consumer Secret (als self.consumer_secret) und
  • die Quelle, aus der Tweets generiert werden sollen (bot.original).

Esse deshalb jetzt Kakao aus einem Messbecher, da nichts anderes da ist und ich zu faul zum aufstehen bin :(

@rasselzombie) 24. Januar 2017

Jetzt kann der kleine Freund das erste Mal gestartet werden; ich stecke ihn hierzu in aller Regel in einen screen, da kann er sich dann austoben. Wie ihr das macht sei euch überlassen – ihr habt sicher selbst ganz viele Ideen :D

$ screen -DRS bot
$ cd /home/rasselzombie/Rasselzombie
$ ebooks start
@rasselzombie: User information updated
@rasselzombie: Loading model model/sys_adm_ama.model
@rasselzombie: starting tweet stream
@rasselzombie: Online!

Ich bin gerade sehr verlockend.

@rasselzombie 28. Januar 2017

@rasselzombie läuft im screen

Auf Ansprache reagiert er sehr prompt, wenn auch nicht unbedingt sinnvoll. Und die Diskussionen, die er sich mit anderen Bots liefert, sind ziemlich lesenswert :D Grundsätzlich ist das aber natürlich einfach nur eine Spielerei – mit der ich mich ins wohlverdiente Wochenende verabschiede.