twitter_ebooks-Bot

vom

Ich habe nun ein Twitter-Bot. Wozu? Na, weil ich es kann! ;-)

Es handelt sich hierbei um ein twitter_ebooks-Bot. Ich könnte euch hier jetzt aufwendig erklären wie ich den Bot erstellt habe. Aber dazu habe ich keine Lust. Wäre auch schwachsinnig. Es gibt dafür schon Anleitungen und wozu das Rad neu erfinden? Auf der GitHub Seite des Entwicklers ist z.B. eine Anleitung. Falls ihr eine detailreichere Anleitung benötigt so könnt Ihr die von @autoritaetsprbl benutzen (link).

Es ist lustig zu sehen, was der Bot - eigenständig - aus dem eigenen Twitter Archive so zaubert. Lustig sind auch die Antworten, die der Bot auf Mentions und DM’s schreibt. Manchmal machen die Antworten auch sinn ;-)

Hier mal ein paar nette Tweets vom Bot:

Mein Bot nutzt auch den Hamburger ÖPNV und sucht sich Alternativen, wenn er zu lange warten muss :-P

Twitter Bot und die Hashtag Problematik

vom

Beim Nutzen des Bots, fiel mir auf, dass dieser auch Hashtags benutzt. Ist ja auch klar, denn der Bot erstellt neue Tweets aus Wörtern von alten Tweets. Und da in diesen auch Hashtags verwendet worden sind, nutzt der Bot auch diese. Das ist aber… bescheiden. Denn so werden unnötig Tweets auf Hashtags erzeugt und das muss nicht sein. Besonders dann, wenn es sich um wichtige Hashtags handeln. Leider hat der von mir verwendete Bot selber keine Einstellungsmöglichkeit um die Nutzung von Hashtags zu untersagen. Also muss man selber ran.

Dafür gibt es zwei möglichkeiten:

  • Methode eins: Man entfernt, über Suchen & Ersetzen, alle in der Archive.csv Datei vorhandene “#” und liest diese dann erneut ein.
  • Methode zwei (die schönere Methode): Man lässt den Bot solange neue Tweets erstellen bis keine ‘#’ mehr vorkommt. Erst dann darf er diesen Twittern.

Natürlich habe ich mit für Methode zwei entschieben. Und so habe ich dies Umgesetzt: Die Tweets werden in der bots.rb erzeugt. Und dort habe ich auch die ganzen Änderungen hinzugefügt. Zuerst habe ich eine Funktion geschrieben, welche prüft ob in einem Text eine “#” vorkommt. Ganz Simpel:

def checkTweet(tweetText)
  if not tweetText =~ /#/
    return true
  end
  return false
end

Damit ist auch schon die halbe Arbeit getan. Nun muss nur noch an den stellen, wo ein Tweet erzeugt wird, eine Schleife drum herum gebaut werden, welche so lange ein neuen Tweet erstellt bis die Funktion ein true zurück gibt.

genTweet = true
while genTweet do
  tweetText = model.make_statement
  if checkTweet(tweetText)
    genTweet = false
  end
end
	  
tweet(tweetText)

Fertig. Simpel oder? Die fertige bots.rb findet Ihr hier.

Ihr könnt natürlich die Funktion erweitern und so dem Bot verbieten bestimmte Zeichen oder Wörter zu benutzen.

Ghost um eine robots.txt erweitern

vom

Ich nutze ja Ghost als Blogging Software. Um Ghost um eine robots.txt zu erweitern, muss diese einfach im Ordner vom Theme erstellt werden.

$ cd /var/www/blog.nicojensen.de/content/themes/Vapor/
$ nano robots.txt

Da Ghost keine sitemap.xml erstellt macht es sinn den RSS-Feed als Sitemap in der robots.txt anzugeben, da die meisten Bots den RSS-Feed auch als Sitemap nutzen können.

Sitemap: https://blog.nicojensen.de/rss

Ein Monat Tor Relay

vom

Ich habe jetzt seit einem Monat ein Tor Relay bei mir laufen. Hier einmal die Auswertung, des monatlichen Traffics:

Traffic

Wie man sieht, hatte ich am Anfang etwas Probleme, was an einen falschen Wert in der Konfigurationsdatei lag. Dann hatte ich am Netzwerk was geändert, was dazu führte, dass der Tor Relay ausfiel. Danach war alles Super. Im Durchschnitt gute 3Mbit/s und 30GiB an Traffic pro Tag. Wenn das so bleibt, wie in den letzten 9 Tagen, dann werde ich, in aller Wahrscheinlichkeit, im August allein durch den Tor-Relay 1TB Traffic verursachen. \o/

Falls es euch interessiert die Netzwerk Statistik vom Relay ist in diesem Internet zu finden.

PGP-Key für ungültig erklären

vom

Ich halte mein PGP-Key mit seiner 2048Bit für unsicher und werde mir einen stärkeren PGP-Key erstellen (bzw. habe ich schon erstellt). Der alte PGP-Key soll natürlich nicht mehr benutzt werden. Also habe ich diesen für ungültig erklärt. Da, wie ich finde, dieser Prozess nicht vollständig dokumentiert ist, mach ich dies mal hier für mich.

Schritt eins - PGP-Key ID rausfinden

Um die richtige PGP-Key ID raus zu finden, folgenden Befehl ausführen:

$ gpg --list-keys

Schritt zwei - PGP-Key ungültig machen

Um den PGP-Key für ungültig zu erklären, muss ein revoke Zertifikat erstellt werden.

$ gpg --gen-revoke F2307A84

F2307A84 ist dabei meine PGP-Key ID und muss natürlich je nach ID ausgetauscht werden. Nach der Eingabe des Passphrase erscheint folgende Ausgabe:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: A revocation certificate should follow
    
iHkEIBEIACEFAlPFS58aHQFOZXVlciBrZXkgYXVmIDQwOTYgYmFzaXMACgkQWuNL
mPIweoQ/KQD/aGbKGypNvIVDGSnq1PaCa7NiLpGGjW3FwydB+sEaUq0A/R+dmLl5
rgooEYrlwQcnDA9lv4e6QW0i1xKP5XPCVqlR
=yuWk
-----END PGP PUBLIC KEY BLOCK-----

Dies ist das revoke Zertifikat und muss nun eingelesen werden.

Schritt drei - revoke Zertifikat einlesen

Dazu muss die eben erstellte Ausgabe in ein Textdokument geschrieben werden. Das erzeugte Dokument dann wie folgt einlesen

$ gpg --import my_revocation.txt

Fertig. Das Zertifikat ist eingelesen.

Schritt vier - Keyserver synchronisieren

Nun muss das ungültig erklärte Zertifikat noch mit den Keyservern synchronisiert werden, damit andere dieses Zertifikat nicht mehr benutzen.

$ gpg --keyserver pgp.mit.edu --send-keys F2307A84

Geht man nun auf den PGP-Keyserver, in diesem Fall pgp.mit.edu, so wird das Zertifikat mit

*** KEY REVOKED *** 

gekennzeichnet.

BTW, mein neues Zertifikat hat die ID 04EE0F98.