Twitterのつぶやき取得方法変更(RSS→JSON)

2008/11/29

今までTwitterのつぶやきを取得するのにRSSを使っていましたが、JSONで処理したほうがパフォーマンスが良さそうなのでJSONに変更しました。

処理内容を以下に示します。

1. つぶやき出力領域定義(HTML)

<div id="twitter">
</div>

2. つぶやきのJSONデータを取得してコールバック関数を指定(JavaScript)

http://twitter.com/statuses/user_timeline/<ユーザID>.json?callback=<コールバック関数>

3. コールバック関数にて以下の処理を実行(JavaScript)

つぶやきの内容(文字列)を取得
他ユーザへのレス(先頭が@)は除去
投稿日時を取得してMM/DDに変換
外部サイトへのリンクがあればアンカーを張る
つぶやきを表示
my_id = "l_w_i";                        // 対象ユーザID

item_max = 7;                           // 表示件数

timeline_list = new Array();            // ひとこと格納配列

//
// つぶやき一覧取得 & 出力
//
function get_timeline(result)
{
  var out = '<ul class="fav">\n';

  var cnt = 1;                          // 表示件数カウンタ初期化

  for (var i = 0; i < result.length; i++)
  {
    var text  = result[i]['text'];      // つぶやき

    if (text.match(/^@/))               // 他ユーザへのレスは表示しない
    {
      continue;
    }

    if (cnt > item_max)                 // 表示件数が指定値を越えたら
    {
      break;                            // 処理終了
    }
    cnt++;

    // 投稿日時処理
    var created_at = result[i]['created_at'].split(" ");
                                        // 投稿日時
                                        // (Mon Dec 01 14:24:26 +0000 2008)
    var post_date = created_at[1] + " "
                  + created_at[2] + ", "
                  + created_at[5] + " "
                  + created_at[3];      // 投稿日時変換
                                        // (Dec 01, 2008 14:24:26)

    var date = new Date(post_date);     // 日付文字列 -> オブジェクト変換
    date.setHours(date.getHours() + 9); // UTC -> JST (+9時間) 
    var mon  = date.getMonth() + 1;     // 月取得
    var day  = date.getDate();          // 日取得
    var out_date = mon + "/" + day;     // 日付組み立て(MM/DD)

    // ひとこと置換(外部リンク)
    url_pos  = text.indexOf("http",1);  // URLが含まれている場合、位置を取得
    url_html = '(<a href="' + text.substr(url_pos,256) + '">関連リンク</a>)';
                                        // 外部リンク組み立て
    text = text.replace(/http.*/, url_html);
                                        // つぶやき置換

    // つぶやきHTML文生成
    out += '  <li>' + text + '<span class="period"> ... ' + out_date + '</span></li>\n';
  }

  out += '</ul>\n';

  document.getElementById('twitter').innerHTML = out;
}

関連資料・記事