building an RSS consolidator w/ Yahoo! Pipes

Goal:

Consolidate the feeds from my Flickr, WordPress, Del.icio.us, etc accounts

Solution:

Use Yahoo! Pipes

Intended Audience:

Pipes newbies

Steps:

Create a pipe

  1. Go to http://pipes.yahoo.com and log in, or create an account if you don’t already have one
  2. Click the “Create a pipe” button
  3. In the editor, click and drag a “Fetch Feed” object onto the stage
  4. Open a new browser tab or window, head over to http://flickr.com/, and log in, or create an account
  5. Click on the “Your photostream” link to view your photostream
  6. Scroll to the bottom of the page and copy the “Latest” RSS feed URL
  7. Switch back to the Pipes editor and paste the Flickr URL into the text field in the “Fetch Feed” object on the stage
  8. On the bottom on the “Fetch Feed” object, there is a circular attachment point.  Click on it an drag to start forming a new pipe
  9. Drag the pipe to the attachment point on top of the “Pipe Output” object at the bottom of the stage.
  10. Release the pipe when the “Pipe Output” attachment point glows.
  11. Click the “Save” button to name and save your new pipe
  12. Click the “Back to my Pipes” link next to the save button
  13. Click on the name of your pipe in the list of your pipes.  This will display the output of your pipe.
  14. Click the “More Options” link and then “Get as RSS” in the drop-down.  This will open the RSS feed in your browser if you’re using Safari or Firefox.
Build page
  1. Following an example from Rasmus Lerdorf’s Open Hack talk (http://talks.php.net/show/hack08/8), use simplexml to parse the RSS feed:
<?php
$url = '';
//e.g. http://pipes.yahoo.com/pipes/pipe.run?_id=gIBkHK_V3RGpmv5oBRNMsA&_render=rss
$xml = simplexml_load_file($url);
$num_items = count($xml->channel->item);
for($i = 0; $i channel->item[$i]->title;
    $date = $xml->channel->item[$i]->pubDate;
    $desc = $xml->channel->item[$i]->description;
    $link = $xml->channel->item[$i]->link;

   echo "
<div>";
   echo "
<h3><a href='$link'>$title</a></h3>
";
   echo "$date";
   echo "$desc";
   echo "</div>
";
}
  1. Go back to the browser tab displaying the output from your pipe and copy the URL
  2. Paste this URL into your index.php file as the value for the variable “$url”
  3. Change the beginning of the URL from ‘feed://…&#8217; to ‘http://…&#8217;
  4. Load your page and you should see the output defined above.  Note: var_dump the ‘$xml’ object to see the other available fields.
Extend pipe
  1. Back in the Pipes editor, drag another “Fetch Feed” object onto the stage
  2. Copy and paste another RSS feed into it
  3. From under the “Operators” heading in the list on the left, drag out a “Union” object
  4. Run the pipes from the two “Fetch Feed” objects into the union and pipe the output to the “Pipe Output” object
  5. To add more feeds, drag out additional “Fetch Feed” objects and connect them to the union

2 thoughts on “building an RSS consolidator w/ Yahoo! Pipes

Comments are closed.