Weblog
Stuttgarttweets - jetzt wird zurückgetwittert
Schon seit einiger Zeit sorgt Twitter für Furore und auch in Stuttgart sind so einige Leute aktiv und schreiben Tag für Tag tausende Tweets. Als eine Art zentrale Anlaufstelle dient schon seit ein paar Monaten
stuttgarttweets. Stuttgarttweets versucht, allen Stuttgarter Twitterern zu folgen und gleichzeitig Nachrichten an diese weiterzuverbreiten, sofern die Nutzer zurückfolgen. Somit besteht theoretisch die Möglichkeit für Stuttgarter Twitterer, eine Nachricht an alle anderen Mitglieder zu verbreiten, ohne diesen selbst folgen zu müssen. Bisher funktionierte das mehr oder weniger nur von Hand, indem
@heileribke,
@oliverg und ich immer wieder nach Nachrichten schauten und diese weiterverbreiteten.
Um hier etwas mehr Dynamik reinzubringen, habe ich einen kleinen Bot in PHP geschrieben, der automatisch sogenannte @-Replies als Tweet unter Bezugnahme auf den ursprünglichen Autor aussendet.
Basis für den Bot ist die Twitter-PHP-Klasse "php-twitter", zu finden auf
Google Code, die ich jedoch ein wenig modifizieren musste. Zum einen habe ich eine weitere Methode hinzugefügt, die die Replies abrufen kann:
Außerdem musste ich die Methode isFriend modifizieren, so dass sie einfach true oder false zurück liefert:
Weiterhin kommt eine Logger-Klasse zum Einsatz, um ein paar Reports in eine Log-Datei zu schreiben. Hierfür verwende ich
KLogger von Code-Fury.
Nun ist noch eine Datenbank-Tabelle anzulegen, in der bereits getweetete Nachrichten gespeichert werden.
Der Bot wird über einen Cron-Job regelmäßig aufgerufen und überprüft zuerst die Dienstbereitschaft der Twitter API sowie die verbleibenden Abrufe. Danach ruft er die @-Replies ab, wobei er überprüft, ob die jeweilige Nachricht schon einmal empfangen wurde. (Leider scheint der Twitter-API-Aufruf unter Berücksichtigung der letzten Tweet-ID nicht zu funktionieren.) Nun wird überprüft, ob der Absender des Tweets auch ein "Freund" des Bots ist, d.h. der Bot muss dem Absender auch folgen. Diese Abfrage habe ich eingebaut, um zu verhindern, dass Spam-Nachrichten verschickt werden. Ein absoluter Schutz ist es natürlich nicht. Im Falle von Stuttgartweets wird die Liste der verfolgten Leute händisch gepflegt, denn wir wollen gerne sicherstellen, dass wie die Auswahl auf die Region Stuttgart eingrenzen. Neue Tweets werden in die Datenbank gespeichert. Anschließend wird wiederum die Datenbank ausgelesen und die Nachrichten, die noch nicht ausgesendet wurden, werden getweetet. Ist das Verschicken des Tweets erfolgreich, erhält der entsprechende Eintrag in der Datenbank eine Marke für "versendet", im anderen Fall wird beim nächsten Durchlauf erneut versucht, die Nachricht zu versenden. Alle Fehler werden im Log-Protokoll aufgezeichnet.
Und
hier läuft das Ganze. Vielleicht hat ja jemand schon an einer ähnlichen Sache gearbeitet oder hat dies vor und findet hier etwas Inspiration. Es würde mich freuen.
Anzeige der uid im Backend von TYPO3 4.2
Aktuell hatte ich in einem Projekt das Problem, dass in der Listenansicht der Dateinsätze meiner Extension im Backend nicht mehr die IDs angezeigt wurden, sondern nur der Text "[Kein Titel]". An der Konfiguration der Extension hatte ich nichts geändert, wohl aber ein Update von TYPO3 (auf Version 4.2.2) durchgeführt.
Nach einigem Suchen und Ausprobieren, fand ich schließlich die Fehlerbeschreibung im Bug-Tracker:
http://bugs.typo3.org/view.php?id=9506&nbn=3
Da ich nicht in den Core-Dateien von TYPO3 editieren möchte, habe ich das Problem nun so gelöst, dass ich einen Eintrag für die Spalte uid in der tca.php meiner Extension hinzugefügt habe und den Typ der Spalte auf "nur lesen" gesetzt habe. In der Datei tca.php sieht das dann folgendermaßen aus:
...
"columns" => array(
"uid" => array (
"exclude" => 0,
"label" => "LLL:EXT:lang/locallang_general.xml:LGL.uid",
"config" => array (
"type" => "none",
)
...
)
...
)
