如何使用YQL合并按pubDate排序的2个RSS源?

时间:2010-04-27 03:45:51

标签: rss yql yahoo-pipes

看到YQL正在被提升为一种很好的做事方式,我很好奇如何使用YQL来获取并将两个不同的feed合并为一个(按pubDate排序)。

获取2个Feed非常简单,但事实证明这些Feed只是连接在一起而没有合并。

以下是示例代码。

select channel.title,channel.link,channel.item.title,channel.item.link
    from xml where url in(
      'http://code.flickr.com/blog/feed/rss/',
      'http://feeds.delicious.com/v2/rss/codepo8?count=15',
      'http://www.stevesouders.com/blog/feed/rss',
      'http://www.yqlblog.net/blog/feed/',
      'http://www.quirksmode.org/blog/index.xml'
    )

3 个答案:

答案 0 :(得分:3)

感谢您提供此信息。它在访问rss对象时也有效:

select title,link,pubDate from rss where url in (
    'http://feeds.delicious.com/v2/rss/hasematzel?count=3',
    'http://oliverschwarz.tumblr.com/rss',
    'http://twitter.com/statuses/user_timeline/818226.rss',
    'http://hasematzel.de/blog/feed/',
    'http://piepmatzel.de/feed/'
) | sort(field="pubDate", descending="true")

这是创建新闻编辑室或生活流的一种非常简单的方法。不要忘记强制缓存YQL返回:)

答案 1 :(得分:2)

这应该可以解决问题

select channel.item.title,channel.item.link, channel.item.pubDate
    from xml where url in(
      'http://code.flickr.com/blog/feed/rss/',
      'http://feeds.delicious.com/v2/rss/codepo8?count=15',
      'http://www.stevesouders.com/blog/feed/rss',
      'http://www.yqlblog.net/blog/feed/',
      'http://www.quirksmode.org/blog/index.xml'
    )
  | unique(field="channel.item.link")
  | sort(field="channel.item.pubDate", descending="true")

使用查询后功能 unique 过滤掉重复项,排序以重新排序结果。这里是指向这些函数http://developer.yahoo.com/yql/guide/sorting.html

的文档的链接

答案 2 :(得分:1)

关于RSS问题 - YQL总是返回XML - 如果你想把它变成RSS feed,你也可以使用Yahoo Pipes和YQL模块将它作为RSS。