Видя, что YQL рекламируется как хороший способ сделать что-то, мне стало интересно, как использовать YQL для извлечения и объединения двух разных каналов в один (отсортированный по pubDate).
Получить три канала довольно просто, но получается, что каналы просто объединяются и не объединяются.
Вот пример кода.
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' )
Спасибо за эту информацию. Работает и при доступе к объекту 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:)
Это должно сработать
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")
используйте функции пост-запроса уникальные для фильтрации дубликатов и сортировку для изменения порядка результатов. Здесь ссылка на документацию этих функций http://developer.yahoo.com/yql/guide/sorting.html
Что касается вопроса RSS - YQL всегда возвращает XML - если вы хотите превратить его в канал RSS, вы также можете использовать Yahoo Pipes и модуль YQL, чтобы получить его как RSS.