Erik's blog

Code, notes, recipes, general musings

building an RSS consolidator w/ Yahoo! Pipes

with 2 comments

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 = '<URL for Pipes output>';
//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 < $num_items; $i++)
{
    $title = $xml->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
Advertisements

Written by Erik

October 9, 2008 at 7:25 am

Posted in Uncategorized

Tagged with , , ,

2 Responses

Subscribe to comments with RSS.

  1. Just testing everything out!

    eChristian SLOAN

    May 18, 2010 at 2:51 pm

    • Please let me know if you run into any issues

      Erik

      June 29, 2010 at 10:08 am


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: