2008年2月27日水曜日

jFeed(jQuery)で複数フィードの取得&マージ

スズキです。

jFeed(jQuery)で複数のフィードを取得して、
http://suz-lab.blogspot.com/2007/10/jfeedjqueryrssatom.html
あたかも、一つのフィードのように処理できるようにする
って実装です。

要は、それぞれのフィード取得で得られたfeed.itemsを
一つの配列としてまとめれればOKということです。

で、下記のように実装してみました。

▼ポイント!?
1. getFeedsは再起関数です。
(非同期通信が入っているので)
2. getFeedsの引数に関数指定するようにしました。
(初めての試みですが感動です)
3. 配列をつなぐには「配列1.concat(配列2)」です。
(実際はitems.concat(feed.items))
4. 配列の繰り返しはjQuery.each使ってみました。
(jQuery.mapと迷ったけど…)

--------
$(function(){

  var feeds = [
    "xml/app/hoge01.xml",
    "xml/app/hoge02.xml"
  ]

  getFeeds(feeds, function(items){
    jQuery.each(items, function(){
      alert(this.title);
    });
  });

});

function getFeeds(feeds, callback, items) {
  if(feeds.length > 0) {
    jQuery.getFeed({
      "url" : feeds.pop(),
      "success": function(feed) {
        if(items == null) {
          getFeeds(feeds, callback, feed.items);
        } else {
          getFeeds(feeds, callback, items.concat(feed.items));
        }
      }
    });
  } else {
    callback(items);
  }
}
--------

次は、マージした配列を日付とカテゴリでソートです。
カテゴリでソートするためには、jFeedを拡張しなければいけない…

--

http://suz-lab.blogspot.com/

0 コメント: