MT3.3のWidgetで自分のはてなブックマークを表示

このごろブログを毎日書かなかったりしてたので、トップページをちょっとでもにぎわせようと悪あがき。

xml2jsonを利用して、自分の最近のはてなブックマークをJSONで取得してJSで整形して表示。

基本的な仕組みはサンプルコードそのまま。データ整形と表示がちょっと違うくらい。

最初RSSをjsonにしてたんだけど、コメントを書いてない場合descriptionが空じゃなくてページのサマリになってたので、/atomfeedの方を使う事に。atomfeedは同じ要素を属性値で分けてるので、その選別を力技で実装してますがスルーで。

そんな訳で、無駄にトップページがにぎわってます。

以下をWidgetとして保存。

<div class="module-bookmark module">
  <h2 class="module-header">My Bookmarks</h2>
  <div class="module-content" id="id_my_bookmarks">
  </div>
</div>
<script type="text/javascript">
var name   = 'my_bm';
var proxy  = 'http://app.drk7.jp/xml2json/';

var my_bm = {};
my_bm.init = function() {
    var script = document.createElement('script');
    script.charset = 'UTF-8';
    script.src = proxy + 'var=' + this.name + '&url=' + 
                 escape('http://b.hatena.ne.jp/KoshigoeBushou/atomfeed');
    document.body.appendChild(script);
}

my_bm.onload = function(data){
    var container = document.getElementById('id_my_bookmarks');
    var dl = document.createElement('dl');

    for (i in data["entry"]) {
        var item = data["entry"][i];
        var dt   = document.createElement('dt');
        var dd   = document.createElement('dd');

        var href = '';
        for (j in item["link"]) {
            if (item["link"][j]["rel"] == "related") {
                href = item["link"][j]["href"];
            }
        }
        var link = document.createElement('a');
        link.setAttribute('href',   href);
        link.setAttribute('target', '_blank');
        link.appendChild(document.createTextNode(item['title']));

        var comment = '';
        if (typeof(item["dc:subject"]) == "string") {
            comment = "[" + item["dc:subject"] + "]";
        } else if (typeof(item["dc:subject"]) == "object") {
            for (j in item["dc:subject"]) {
                comment += "[" + item["dc:subject"][j] + "]";
            }
        }
        if (typeof(item["summary"]) == "object" && item["summary"]["content"]) {
            comment += item["summary"]["content"];
        }
        if (comment == '') {
            comment = "no comment...";
        }

        dt.appendChild(link);
        dd.appendChild(document.createTextNode(comment));

        dl.appendChild(dt);
        dl.appendChild(dd);
    }
    container.appendChild(dl);
}
var old = window.onload;
window.onload = (typeof old != 'function') ?
    my_bm.init : function(e) { old(e); return my_bm.init(e); };
</script>
プロフィール

このブログ記事について

このページは、koshigoeが2006年8月 6日 02:00に書いたブログ記事です。

ひとつ前のブログ記事は「ThunderbirdでのRSS表示」です。

次のブログ記事は「検索ボタンをなくしてみた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。