Getting Zune recent, favorite, and artist info via RSS/Atom

Built-in playlists in the Zune ecosystem, such as “Recent Tracks” and "Favorites Tracks", can be consumed as Atom feeds at URLs such as:

http://socialapi.zune.net/members/98772405-3286-4e64-b78b-f7512f3804fe/playlists/BuiltIn-FavoriteTracks.

(See this post’s comments to learn more about the URL’s structure.)

Unfortunately there a couple usability problems with the feed as is:

  1. According to feedvalidator.org, an Atom namespace qualifier used on the <feed> element will cause interoperability problems. It’s perfectly valid XML and Atom 1.0 but some consumption code, including some I saw written at work the other day, is looking for <feed>, not <a:feed>. I suspect this is what throws off FriendFeed‘s Atom importer, as well as others.
  2. <entry><link> has an empty href attribute. Hey Zune team, remember that social I mentioned earlier? If you don’t link to it, customers ain’t joinin’ it.
  3. <entry><updated> is the feed-generated date/time, not the date/time the track was added to the list.
  4. Most things support Atom, but not everything.

So I fixed it up with Yahoo Pipes:

  1. I put an end to interoperability problems by sourcing the Atom feed in Pipes as raw XML, then spitting certain elements back out as RSS.
  2. I use the Zune Social XML namespace track information to link to track info on http://social.zune.net.
  3. There’s nothing much to be done about the date problem that I could see… that’s for the Zune folks to fix.
  4. Pipes exports as RSS. Easy.

The result is at http://pipes.yahoo.com/waded/zunefavorites.

Then, the improved RSS equivalent, with parameters you can change in bold, is:

http://pipes.yahoo.com/pipes/pipe.run?_id=4va_WrpV3RG7AfwEiXrL0A&_render=rss&mid=98772405-3286-4e64-b78b-f7512f3804fe&playlist=BuiltIn-FavoriteTracks