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;
コメント