Dec 20

feedcher

Veröffentlicht von Hanny

Nachdem ich mich bisher eher im Hintergrund betätigt hab’, meld’ ich mich nun auch mal zu Wort.
Ich versuche mal das Programm vorzustellen an dem ich momentan am ehesten arbeite :) : den feedcher.

Der Post hier wird vermutlich ab und an mal editiert werden, der jetzige Status ist mehr ‘ne Preview.

Warum der Name?

feedcher ist eine Zusammensetzung von “feed” im Sinne von RSS Feed und dem englischen Wort “fetch” was im Grunde schon den kompletten Sinn des Programms erklärt.

Sinn des Programms

Das Programm soll, bzw. ist schon auf eingeschränkte Art und Weise, fähig sein, RSS Feeds von externen Seiten zu fetchen. Mit fetchen meine ich hier aber nicht einfach die XML-ähnliche Datei des RSS Feeds auszulesen und zu speichern, sondern den kompletten Content der verlinkten Seiten zu analysieren und die wichtigen Sachen  zu speichern.

Der Hintergrund hierfür ist, dass viele (auch sehr große Seiten) die ursprüngliche Idee des RSS-Feeds (zumindest meiner Interpretation nach) etwas vernachlässigen, denn der <item> Block einer RSS-XML sollte meiner Meinung nach den kompletten Text des Artikels beinhalten, dies tut er aber in den seltensten Fällen. Wäre der <item>-Block korrekt, wäre es möglich den Feed zu laden und anschließend, unabhängig vom Zugang zum Internet, zu lesen.

Der feecher soll diese Lücke stopfen und den tatsächlichen Inhalt des <item> in einer MySQL Datenbank ablegen, diese stellt die ideale Möglichkeit dar, den Inhalt danach weiter zu verarbeiten (php, download als tgz, Erstellung eines neuen, vollständigen RSS etc)

Implementierung

Das Programm soll nach einer bereits bekannten Methode funktionieren (siehe munin oder logwatch):

Ein sogenannter Node lädt, verwaltet und ruft Plugins für jeden einzelnen RSS Feed auf, die dem Node dann die Daten zuführen und anschließend in die Datenbank geschoben werden. Der Node ist in dem Fall in C++ geschrieben, verwendete Libraries sind bis jetzt openssl (md5), curl (http) und mysqlpp (MySQL, obviously).

Die Plugins können in jeder beliebigen Sprache geschrieben sein, sie müssen nur auf stdout ihre Config und später in Dateien ihre Results ausgeben können (Ruby, Perl, Python…).

Bearbeitung eines Beispielfeeds

Der Node erkennt ein Plugin, holt sich dessen Config (Argument ist hier “autoconfig”) über den stdout (nach dem Schema “feedUrl=www.foobar.foo”) und holt sich den Feed. Nun wird jeder <item>-Block md5-gehashed und überprüft ob dieser Hash schon in der Datenbank existiert, wenn nicht wird der <item>-Block in eine Datei geschrieben und das Plugin mit dem Filename als Parameter aufgerufen. Das Plugin verarbeitet nur den <item>-Block und schreibt die Ergebnisse in seine neue Datei, welche der Node anschließend einliest und die ermittelten Daten in die Datenbank schreibt.

Status

Die Grundzüge des feechers funktionieren schon, eine bestimmte, hier nicht genauer genannte, Seite wird bereits korrekt eingelesen und verarbeitet. Im Moment hängt es noch an dem Vorhandensein eines korrekten Plugins, das von mir (in Python) geschriebene Plugin schafft es bisher nicht, die HTML-Tags korrekt zu entfernen, das sollte aber das kleinste Problem werden.

Die Entwicklung liegt zwar momentan auf einer kurzen Eisstrecke, wird aber bestimmt wieder anlaufen, auf Anfrage kann man die Quellen aber jetzt schon erhalten :)

mfg Hanny

PS: Feedback & comments are highly appreciated

Nov 29

HWE 28-29. November ’09

Veröffentlicht von Robert

Nachdem social Hacking beim Arne frühzeitig abgebrochen wurde, weil er am Samstag morgens arbeiten musste, hat er sich kurzfristig entschieden, doch noch ein HWE zu machen. Irgendwann um 1500 hat der Hanny vier mal bei mir angerufen, was ich aber erst hinterher gesehen habe. “Ey HWE kommste (y/n)?” … Kurzerhand Karo eingepackt und los gings. Einkaufen hat diesmal nicht gefailed, Schlagsahne und nicht saure, das richtige Päckchenzeug… Und eine Pomelo hatten wir auch noch. Jetzt, wo das HWE zu Ende geht stellt sich jedoch heraus, dass das doch gefailed hat. Viel zu viel Eis gekauft, nichts von den Nudeln gegessen weil Arnes Eltern gekocht haben, die Pomelo liegt immer noch auf der Treppe und irgendwie hat eh keiner Hunger. Der Kasten Club-Mate war um 14:35:29 schon leer, den letzten Schluck Mezzo hat Karo gerade runtergezogen. Wie es mit der CNC so ablief hab ich ja schon gebloggt.

Ein weiteres Problem war, dass Arne’s onehin schon langsames Internet abgeschaltet wurde. Nach ewigem WLAN-Suchen war dann schließlich eines gefunden und das zweite Netbook vom Arne hat mit Hilfe einer zweiten WLAN-Karte schön wieder in unser LAN geroutet. Von der Geschwindigkeit will ich garnicht reden. Trotzdem hat Onny gemeint, er müsste sämtliche Ubuntu-Pakete installieren, zumindest kam es einem so vor, denn jedes Mal, wenn man auf seinen Bildschirm geschaut hat, war irgendein Paketmanager zu sehen. Trotzdem haben wir es nebenher sogar irgenwie geschafft, Hanny dabei zu helfen, den Blog einzurichten.

Gegen Ende gab es dann wieder Probleme mit der Internetverbindung, was dann mehr oder weniger auch der Auslöser für die Beendigung des HWE war (Arne musste erstmal Brennholz holen gehn).

Alles in allem war das HWE doch ganz produktiv, Blog und CNC laufen überraschend gut, Sprit habe ich auch wieder genug verbraucht und die Mate wurde auch excessiv konsumiert (Müdigkeit wurde effektiv totgeschlagen, wir waren bis 6 Uhr wach).

Das war’s erstmal von mir, vielleicht erbarmt sich ja noch jemand anderes, mal etwas zu schreiben. Ich geh jetzt erstmal ne Shisha machen.

KTHXBYE

Lokalisiert von Hashi.Modified by project-insanity.