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;
}
関連資料・記事