AnyEvent::Twitter::Stream の素敵さを今更ながら実感してみる

このページは約 4分9秒で読めます。

AnyEvent::Twitter::Stream が 一般公開された User Streams API に対応というネタを見たので、サンプル書いてみました。

といっても、ほとんど、AnyEvent::Twitter::StreamでDesktop Notify – すぎゃーんメモ のコードを使ったようなものですが。

ハッシュタグ #oreimo にヒットした行をコマンドラインに出力するようにしてるのは、ちょうど TL で俺妹の実況がされていたから。Windows 上で実行しているので、文字コードは sjis にしてから print してます。

うーん、思った以上に簡単に UserStream が利用できますね。AnyEvent::Twitter を使えば TL へのポストも可能なようで、bot の TL 取得部分をこの処理に変えると、最速で反応することもできるんだろうなあ。

#!/usr/bin/perl
use strict;
use AnyEvent::Twitter;
use AnyEvent::Twitter::Stream;
use Encode;
use utf8;
my $cv = AE::cv;

my $twitty = AnyEvent::Twitter->new(
      consumer_key        => $consumer_key,
      consumer_secret     => $consumer_secret,
      access_token        => $access_token,
      access_token_secret => $access_token_secret,
);
my $done = AnyEvent->condvar;
my $listener = AnyEvent::Twitter::Stream->new(
      consumer_key        => $consumer_key,
      consumer_secret     => $consumer_secret,
      token               => $access_token,
      token_secret        => $access_token_secret,
      method          => "userstream",
      on_tweet        => sub {
        my $tweet = shift;

        my $user = $tweet->{user}{screen_name};
        my $text = ($tweet->{text} || '');
        return unless $user && $text;
        if ($text=~/#oreimo/) {print '#oreimo'.encode("sjis",$text);}
     },
     on_error => sub {
        my $error = shift;
        warn "ERROR: $error";
        $done->send;
     },
     on_eof   => sub {
        $done->send;
     },
);
$cv->recv;
スポンサーリンク

Trackback URL

No Trackback to AnyEvent::Twitter::Stream の素敵さを今更ながら実感してみる

Still quiet here.

Comments are closed.