Topsyから指定URLのツイートを取得する

Topsyから指定URLについて言及しているツイートを取得

うちのブログでコメント欄代わりに使っているサービスとサンプルコードについて紹介します。@anywhereなどが混ざっている分は取り除いた状態です。

TopsyというTwitter関連サービスが提供している、APIを使って指定したURLについて言及している(そのURLを含む)ツイートを取得してきます。Topsy自体はRT数をカウントするブログパーツで有名な老舗サービスだと思いますが、その関連で提供されている機能です。

今回は、TrackbacksのAPIを利用します。本来の仕様はリンク先を見てください。このエントリーでは、コードのベタ貼りコースの紹介に留めます。

サンプルコード

$(function()
{
    /* URLを指定します。a-blog cmsの場合は、エントリー詳細で%{PERMALINK}でOK。 */
    var url     = '%{PERMALINK}';

    /* 取得したコメントを入れる先の要素をCSSセレクタで指定します。jQueryのセレクタに使うだけ。 */
    var target  = '#topsy_trackbacks';

    /* エラーハンドリングは特に考えません */
    $.getJSON('http://otter.topsy.com/trackbacks.js?url='+ url +'&callback=?', function ( json )
    {
        var res = json.response;
        if ( !res.total ) {
            return false;
        }

        /* この辺りで適当な ul > li のモトを作っているので、適宜編集してください。 */
        var html = '<ul>';
        var tpl  = '<li>'+
                     '<a href="{url}" target="_blank"><img src="{thumb}" alt="{name}" width="24" height="24" /></a>'+
                     '@{author_id} ; {status} ( <a href="{permalink}">{datetime}</a> )'+
                   '</li>';

        /* ひたすら文字列を連結する */
        var len = res.list.length;
        for ( var i=0; i<len; i++ ) {
            var tweet   = res.list[i];
            html       += tpl.replace('{thumb}',    tweet.author.photo_url.replace(/(normal)\.([a-z]{3,4})$/i,'mini.$2'))
                             .replace('{author_id}',tweet.author.url.replace('http://twitter.com/',''))
                             .replace('{url}',      tweet.author.url)
                             .replace('{name}',     tweet.author.name)
                             .replace('{permalink}',tweet.permalink_url)
                             .replace('{status}',   tweet.content)
                             .replace('{datetime}', tweet.date_alpha);
        }
        html += '</ul>';

        /* 1度に10件まで取得できるので、11件目以降がありそうならTopsyへのリンクを加えておきます。 */
        if ( res.total > 10 ) {
            html       += '<a id="topsy_continue" href="'+res.topsy_trackback_url+'" target="_blank">もっと読む ( Topsy )</a>';
        }

        $(target).prepend(html);
    });
});

一応、a-blog cmsでの利用を想定しているので、jQuery依存です。url変数には、a-blog cmsの%{PERMALINK}が記述されていますが、パーマリンクを与えることができれば何でもよいので、他のブログツールでも動きます。

続き以降に、実際の動作サンプルも置いておきます。

動作サンプル

このサンプルでは、http://www.a-blogcms.jp をURLに指定して、表示してみています。ちゃんと出てますかね?