Ich stand vor der Aufgabe, dass ich zwei unterschiedliche Feeds in einen Feed zusammen mergen musste. Meine erste Idee war, mir dafür ein Serendipity Plugin zu schreiben, das dieses erledigt. Nach ein wenig googlen fand ich aber eine deutlich elegantere Lösung: Yahoo Pipes.
Mit Yahoo Pipes kann man relativ beliebigen Input aus dem Web nehmen, ihn durch "Pipes" schicken und einen neuen Output daraus generieren. Pipes sind dabei kleine Werkzeuge, die z.B. Eingänge filtern und sortieren. Das ganze bietet sich geradezu zum Zusammenfügen von mehreren Feeds oder zum Filtern von bestimmten Einträgen aus einem Feed an.
Yahoo Pipes bietet dafür einen sehr intuitive und einfach zu bedienende grafische Oberfläche an, in der man sich sein Resultat mit Elementen aus einem Bausteinkasten zusammen schieben kann. Die Aufgabe, zwei (oder mehrere) Feeds in einem einzigen Feed zusammen zu mergen ist jedenfalls ein Kinderspiel:
Wie wirds gemacht?
Zuerst geht man auf die Seite von Yahoo Pipes und loggt sich mit seinem Yahoo Account ein. Dort klickt man auf "Create Pipe" worauf sich der leere Editor für die Pipes öffnet. Er besteht vor allem aus der Arbeitsfläche und dem genannten "Bausteinkasten" links:
Eingabe Quelle angeben
Als erstes wird angegeben, aus welchen Quellen die Daten abgeholt werden sollen. Ich hatte wie gesagt 2 Feeds, die ich zusammen führen wollte, also wählte ich unter Sources das Modul "Fetch Feed" und zog es mit der Maus auf die Arbeitsfläche. In der "Fetch Feed" Source können gleich mehrere Feed Sourcen angegeben werden, die nachher zusammen gepiped werden sollen, also habe ich hier eigentlich schon die Funktionalität zusammen, die ich haben wollte:

Ich habe hier einfach einmal zwei beliebig ausgewählte Video Feeds von YouTube eingetragen. Danach wird das "Fetch Feed" Modul mit dem "Pipe Output" verbunden. In dem oberen Feld, dass im Bild gerade "untitled" anzeigt, kann man einen eigenen Namen für seinen zusammen geführten Feed angeben, danach speichert man die Pipe über den Knopf oben rechts ("save"). Oben rechts mit dem Knopf "properties" kann man dem Feed noch eine Beschreibung und einen vom Pipes Namen unterschiedlichen Titel geben sowie Tags vergeben, wenn man möchte. Nun ist der zusammen gemergte Feed fertig und kann angesehen werden, z.B. über "Back to my pipes" und dort die neu erstellte Pipe anklicken.
Finetuning
Wenn man sich das Resultat ansieht, bemerkt man, dass der neue Feed zuerst alle Einträge der ersten Quelle, dann die der 2. Quelle usw anzeigt. Das ist unglücklich, man möchte die Items im Feed sicherlich gerne in chronoligischer Reihenfolge ihrer Erstellung anzeigen. Für so etwas bietet Yahoo Pipes Operatoren an ("Operators"). Dort finden man z.B: den Operator "Sort" und "Filter", die nun angewendet werden.
Man zieht zuerst den Operator Sort auf die Arbeitsfläche. Dann löscht man die Verbindung zwischen "Feed Fetch" und "Pipe Output". Nun kann man den Operator "Sort" zwischen die beiden bisherigen Elemente hängen, was eine Sortierung der über den multiplen Feedfetch gezogenen Einträge vor dem Pipe Output ausführt. Den "Sort" Operator muss man noch konfigurieren.
Es soll nach Erstelldatum sortiert werden, also wird im Sort Operator für "sort by" item:pupDate ausgewählt (der Operator bietet einem bei korrekter Verbindung hier schon alle derzeit möglichen Attribute an). Schaut man sich den Feed nun an, nachdem diese Änderung abgespeichert wurde, so werden die Einträge nun nach Erscheinungsdatum sortiert aufgelistet.
Ich habe zusätzlich noch einen Unique Operator eingebaut, dieser bewirkt, dass die selben Einträge, die evtl. in mehreren Feeds vorkommen, nicht mehrfach auftreten. Es wird hier einfach nach dem Titel der Einträge geschaut und bei mehreren Einträgen mit dem selben Titel immer nur einer genommen. Man könnte nun noch beliebige Filter Operatoren einbauen, die z.B. nur Einträge durchlassen, die ein bestimmtes Wort in der Beschreibung haben und ähnliches.
Mein Resultat sieht dann wie folgt aus:

Fazit
Ich muss schon sagen: Ein ziemlich mächtiges Werkzeug, das mit einer äußerst einfach zu benutzenden Oberfläche daher kommt. In dem Beispiel hier habe ich nur einen minimalen Bruchteil der Möglichkeiten benutzt, die hier vorstellbar sind. Es bleibt noch viel Raum, selber einmal mit dem Tool herum zu spielen und vorhandenen Web Content nach neuen Aspekten aufzubereiten. Welche Anwendungsfälle könnt ihr euch für dieses Tool vorstellen?