桜恋唄
幽遊白書・黒鵺×蔵馬中心、桜枝真央の同人的創作の館

RSS0.91 | RSS2.0 || 桜恋唄 (HOME) » 桜恋唄構築話 » つぶやき表示方法(修正しかも暫定)

つぶやき表示方法(修正しかも暫定)

Contents

Writer:
桜枝真央
Category:
桜恋唄構築話
Posted on:
2010-03-11 20:48

[2012.11.11追記] Twitter の仕様変更により一部修正。でも来年には使えなくなるんだってさ…。

 またも携帯の人には申し訳ない話題で御免なさい…。Twitter API を使って自分のつぶやきを JavaScript で表示させる方法がネットにいくつか紹介されています。JavaScript など触ったこともないのでうちでは他の方の公開されているものを使わせて頂いてます。最初に見つけたのが「blogger.js」で、「Twitter badge blogger.jsの時間表示を日本語で: 啄木鳥亭新報」から時間表示を日本語にした改造版を頂いてきました。

 使ってすぐに気づいたのが「@」付のつぶやきも表示されてしまうということ。お相手の方が気にしなければいいんですが気にする人だとまずいので隠すことにしました。でも自己レス (自己ツッコミ) は表示させたいので「Twitterのつぶやき取得方法変更(RSS→JSON) - Life with IT」を参考にしつつ改造しました。しかし! 更なる問題点が。HTML 側で JSON を呼び出す時に「count=3」と指定した場合、「@」のついたつぶやきの分表示が減ってしまいます (3つ表示させるはずが2つになったり、最悪0になる)。結局 blogger.js の処理を捨てて後者様のコードで運用することにしました…。でも時間表示は日本がいいので最終的にはチャンポンです。

function twitterCallback2(twitters) {
var count = 3;
var statusHTML = [];
var cnt = 1;
for (var i=0; i<twitters.length; i++) {
var username = twitters[i].user.screen_name;
var status0 = twitters[i]['text'];
var user_name="@"+username;
if (status0.match(/^@/) && !status0.match(user_name)) continue;
if (cnt > count) break;
cnt++;
var status = status0.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, 
function(url) {return '<a href="'+url+'">'+url+'</a>';}
);
statusHTML.push('<li>'+status+'&nbsp;<a href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></li>');
}
document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}

 function relative_time() は手を入れていないので省略です (先に上げた方のサイト様のコードまんま)。で、HTML (正確には Nucleus のスキン) に書く JavaScript の呼び出しコードは

<ul id="twitter_update_list">
</ul>
<script type="text/javascript" src="(うちのサイトのパス)/blogger.js"></script>
<script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline/(私のユーザ名).json?callback=twitterCallback2&count=3"></script>

に変更し、count 引数の指定をなくしました (2012.11.11修正しました)。

 気になったのは count の指定がない場合、これまでの全部のつぶやきについて JSON 変換処理がされるのかということでした。これはどうやら杞憂で、引数指定がない場合は20件、指定した場合は最大200件の処理となるようです。Twitter API のアクセス制限は 1IP 辺り 150回/hr だとか。よほどアホな間隔でリロードする人 (=攻撃の意図があるとしか思えない人) やどこぞの絨毯爆撃的クローラーの襲来を受けない限りは持ち堪えそうです。

[2012.11.11追記] 上記の部分、「&count=xx」の指定がないと表示出来なくなったようです。またアクセス制限が大幅に強化されたらしいので呼び出し回数には御注意下さい…。

||

コメント

まだコメントはありません。

このアイテムは閲覧専用です。コメントの投稿、投票はできません。

桜恋唄について | 管理人について | サークル情報 | サイトマップ