jFeed pluginで遊んでみた

  • Posted by: maRk
  • JavaScript
  • このエントリーを含むはてなブックマーク

feedをパースするjQueryのプラグインを使ってこのブログのフィードを読み込んでみました。

以下が提供もとのサイトです。Windowsで試すにtar.gzが展開できるアプリケーションがいるかもです。ローカルで試すのにローカルサーヴァの環境が必要かと

1. jQueryとjFeedを読み込む

展開後のexample.htmlなんかがシンプルなサンプルかと。お決まりな感じですが、先にjQuery(同梱されてます)とjfeed.jsか、jfeed.pack.jsを読み込んでおきます

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.jfeed.pack.js"></script>

2. ちょっとパースさせてみる

今回はブログのAtomフィードをつかうってことで置き換えてみます。

サンプルと一緒ですが、

jQuery.getFeed({ url: 'atom.xml', success: function(feed) {
           alert(feed.title);
       }
});

でフィードのタイトル(要素の中身)がアラートとなります。

3. フィードの読み込み

jFeed関係であれこれみていると、.getFeed()のsuccess:のところに関数をあてて別途関数を用意するといった書き方をされてるようなんでそれに倣ってみます。

$(function() { jQuery.getFeed ({ 
url: 'blog/atom.xml',
      success: readFeed
   })
});

url: の箇所に読み込むフィードのURLをいれます。

としたうえでreadFeed(){}を用意すると。

要素を得るには、先頭にfeedのつくプロパティと、先頭にentryのつくプロパティとがあり、エントリタイトルを得るには、entry.titleというように、コードをみれば直感的にわかるようになってます。

4. Authorだとかcategoryもパースしたい

サンプルとかみてるとカテゴリとかAuthorなんかを拾ってないようなので追加してみました。

jquery.jfeed.jsを以下のようにカスタマイズしてみました。(実のところ、Atomしか読まないのであればsrcフォルダにjatom.jsといったファイルが用意されていたりします)

item/ JFeedItem.prototype = というところに、

    // ↑ 省略 ↑
    id: '',
    author: '',
    category: ''
}

という具合に取り込みたい要素を追記します。

そうしたら今度はJAtom.prototype = の

jQuery('entry', xml).each( function() {
のところで、

item.author = jQuery(this).find('name').eq(0).text();           
item.category = jQuery(this).find('category').eq(0).attr('term');

上記のコードを似たような(というか真似ただけですが)記述のとこに追記して上書保存します。

categoryは、category/@term の値を読んでますが、正確には(MTのフィードでは)category[@schem="category"]を持つ要素のterm属性の値をもってこないといけないんだと思います(jQueryのセレクタの書き方をいまいち理解してませんorz)。

まあカテゴリ未設定なんてことは殆どないのでこんなんでもいいかなといったところです。

5. 一応完成品

以上です。

Comments:

コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ

blog comments powered by Disqus