リアルタイム実況twitter

2009/10/3 [16:58:28] (土) 天気

streaming API を使えばリアルタイム実況ができる。

http://apiwiki.twitter.com/Streaming-API-Documentation

てことで、雨模様の週末だし、ちょっと作ってみた。

・followしているひとの発言を流す。

・filter.xmlに対してPOSTでリクエスト。

・followパラメータをつけて、followしているひとのIDを指定。follow=ID,ID,ID などとコンマで区切る。

・認証はBasic認証


以上で、callback関数を適当に作るだけ、だった。



sub get_stream_follows{
    my $ids = shift;
    my $uri = ’http://stream.twitter.com/1/statuses/filter.xml’;
    my $req = HTTP::Request->new( POST=>$uri );
    $req->authorization_basic( ’NAME’, ’PASS’ );
    $req->content_type(’application/x-www-form-urlencoded’);
    $req->content( ’follow=’ . $ids );

    my @buf;
    my $disp_twit = sub {
        my ($data, $response, $protocol) = @_;
        shift @buf if( @buf > 20 );
        push(@buf, $data);
        print @buf;
    };
    my $ua = LWP::UserAgent->new( agent => ’twits/0.1’,keepalive => 4 );
    my $res = $ua->request( $req, $disp_twit);
}


ハマったのは、content-tyepの指定忘れ、requestの第二引数の書き方(":content_cb"=>$disp_twit だと思ってたら、requestの場合は関数へのリファンレンスをそのまま書けばいいだけだった)


followしているIDと名前とパスワードを渡せば、これだけで、だらだらコンソールに流れ出すリアルタイム実況が始まる。予想以上に簡単、LWPだけでOKだった。うううむ。perlサイコーっす。

ってもちっと出力データを整形加工しないと、見にくいんだけど。


ところが、もっとらくちんに、こいつをブラウザで表示させようと思って、悶絶。インラインフレームを使うのか、Ajaxを使うのか。どうもよくわからず。ちょっと手ごわい。ぐーぐる様詣で。


[10/03 20:42:29]

comet とか言われてもわからんちんだ。ネットワークプログラムから理解して、perlでストリーミングサーバーを立てる感じになるのか。

てことで素人のわたしには、お手上げ確定。コンソールで眺めるだけにしておく、か。とほほ。


[10/04 18:42:11]

ぐーぐる様によると、perlの世界も、オブジェクトに非同期。POEとかAnyEventとか、初耳寝耳に水、だ。この数年で取り残されてしまってるじゃねいか。とほほ。


Twitter APIリファレンスガイドブック: Twitterアプリを開発する

『Twitter APIリファレンスガイドブック: Twitterアプリを開発する』

池田 成樹

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】