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