Meine Idee, die Blogroll durch meine Twitter-Freunde zu ersetzen, hat einen Haken. Bislang hat kein Feedreader, trotz htmlURL im OPML, ein auto discovery gemacht. Das generierte OPML ist in dieser Form also nicht nutzbar. Sch…ade auch.
Nun, Entwickler sind ja bekanntlich faul ;) Statt selbst das auto discovery zu implementieren (was, nebenbei bemerkt, eine echte pita sein kann, trotz HTTP HEAD und regexp magic), wandte ich mich meinem Kumpel Yahoo! Pipes zu.
Mit Fetch Data, einer Loop, Feed Auto Discovery und Filter ist das Problem, aus einer per OPML (oder beliebigem XML) gelieferten URL-Liste eine Blogroll zu machen, im Nu gelöst.
Im Moment sieht der Ablauf wie folgt aus:
- Benutzer lässt die Applikation per OAuth auf sein Twitter-Profil. Das muss sein, weil die Liste der Freunde nur eingeloggt sichtbar ist.
- Die App ruft den Feed mit den letzten Status der Freunde ab (Freunde, die nie getweetet haben, fallen also hinten runter). Dieser Feed beinhaltet für jeden Freund die im Profil angegebene URL.
Alternativ könnte man auch eine Liste der Twitter-IDs der Freunde abrufen und dann für jeden einzeln das Profil. Pah. - Aus der Liste generiert die App OPML mit htmlURL-Angaben und speichert sie temporär auf meinem Webspace.
- Die Pipe wird mit der URI auf diese Datei als Parameter angeworfen. Sie gibt einen RSS-Feed zurück (Yahoo Pipes! gibt immer RSS zurück, aber auch serialisierte PHP-Arrays oder JSON).
- Dieser Feed wird von der App in OPML umgewandelt und das Ergebnis ausgegeben.
Problematisch dabei ist die Laufzeit von Yahoo! Pipes. Das Crunching der Liste meiner Freunde dauert um die 40 Sekunden — nicht wirklich praktikabel, wie ich finde. Für meine Zwecke reichts, aber um das ganze öffentlich anzubieten, doch etwas zu heftig. Die lange Laufzeit ist durch das auto discovery bedingt. Die Pipe fragt jede URL ab, und muss die Rückgabe parsen. Antwortet die Website langsam oder gar nicht, kanns bis zum Timeout (geschätzte 3 Sekunden) dauern, bis die Loop die nächste URL dem Feed Discovery-Modul übergibt.
Wenn die Feedreader das auto discovery selbst erledigen würden oder clever genug wären, die htmlURL im OPML mit bereits vorhandenen Feeds abzugleichen… eRONA konnte sowas ;)
Der Link führt zu allen eRONA-Artikeln hier — eRONA war ein Feed Aggregator Marke itst.
One comment