IRC-Bot Hauptfunktionalität: Newsfeeds
Drüben bei pyChao bin ich mal wieder darauf gestoßen dass man heutzutage eigentlich überhaupt nicht mehr viel benötigt um wirklich viel Funktionalität in einen IRC-Bot zu packen.
Bereits mit einer guten Implementation für Newsfeeds ist viel zu machen. RSS/Atom-Feeds werden heute beinahe von jeder Webanwendung angeboten, warum das also nicht nutzen und mit einmalig zu schreibendem Code viele erweiterungen einbinden?
Um mal beim Beispiel von pyChao zu bleiben...
Derzeit unterstützen wir nur eine Art von Feeds, diese werden relativ statisch in der Config (Yaml-Format) mit URL und gewünschtem Befehlsstring eingetragen und sind dann je nach Parameterzahl und Parameterinhalt verschieden abrufbar:
- kein Parameter liefert die Elemente vom ersten bis zur Default-Menge aus der Config (z.B. 1-3)
- 1 Nummerischer Parameter (n) liefert die ersten n Elemente des Newsfeeds zurück. Zumindest solange n<= Maximalanzahl (ebenfalls Configdaten, aus Spamgründen)
- 2 nummerische Parameter (n,m) liefern die Elemente von n bis m, solange m-n<=Maximalanzahl
- Text als Parameter liefert die ersten 1-Default Elemente in deren Überschrift der Text gefunden wird.
Bereits mit diesen statischen Parametern sind ziemlich interessante Anwendungen möglich. Zu nennen wären natürlich die Standardfeeds wie der von G33KY^2, aber auch Dinge wie ein Friendfeed-, Google-Reader-, Twitter- oder (besonders interessant für Leute die gerne ein kiddie-script zum Musikspammen hätten) Last.fm-Account lassen sich sehr leicht über RSS ins IRC weiterleiten.
Wie bereits gesagt ist dies aber nur eine erste von 3 geplanten Möglichkeiten wie Feeds abgerufen werden sollen. Die Zweite betrifft etwas dynamischer eingebundene Feeds und wird von mir wohl in den nächsten Tagen in Angriff genommen.
Genau genommen handelt es sich um nichts anderes als einen Feed dessen URL noch leicht via Parameter verändert werden kann. So wäre es z.B. möglich ein generelles !lastfm-Kommando bereit zu stellen, dass die Letzten angehörten Stücke eines beliebigen Nutzers auflistet. Auch Google- oder Torrent-Suchen lassen sich sehr einfach über eine solche Funktionalität realisieren, sollte sie erstmal bestehen.
Die dritte Möglichkeit ist derzeit noch nicht fest eingeplant, da es dank der derzeit relativ flachen Implementierung von pyChao derzeit etwas schwierig ist dies homogen in den Code einzubauen. Es handelt sich um eine im Hintergrund ablaufende Aktualisierung und Verwaltung von Newsfeeddaten. So wäre es möglich (wie in vielen anderen Bots bereits implementiert) permanent auf dem Laufenden zu bleiben was bestimmte Blogs/Foren/Kommentare/Web2.Müll-Dienste betrifft.
Natürlich haben wir nicht vor nur auf der Konsumierenden Seite bei den Newsfeeds zu bleiben. Es ist noch immer geplant auch eine Newsfeed-Ausgabe für neue Facts zu reimplementieren. Zur Diskussion stehen derzeit noch so grundsätzliche Fragen ob das Ganze via API hochgeladen werden oder direkt die selbe DB-Instanz genutzt werden sollte. Auch ist noch nicht klar ob ich das lokal auf meinem Rechner laufen lassen sollte oder doch lieber bei Google-Appengine oder so hosten lassen sollte.
Wir befinden uns diesbezüglich also gerade mal am Anfang einer "Planungsphase" (wirklich Planen? Nein, war nur ein Witz.)