メメメモモ

プログラミング、筋トレ、ゲーム、etc

AnyEvent::Twitter::Stream

AnyEvent::Twitter::Streamは、イベントループ内でTwitterのStreamAPIからデータを受け取っています。下記のコードは、受け取ったデータのうち、ユーザー名とツイート内容を表示しています。

#!/usr/bin/perl
use strict;
use Config::Pit;
use AnyEvent::Twitter::Stream;

my $done = AnyEvent->condvar;
my ($user, $password) = do {    @{ Config::Pit::get( 'twitter.com', require => {
        'username' => 'memememomo',                         })}{ qw/username password/ };
};
my ($method, $args) = @ARGV;

my %args;if ($method eq 'follow') {
    $args{follow} = $args;    
    $method = 'filter';
} elsif ($method eq 'track') {
    $args{track} = $args;    
    $method = 'filter';
}

binmode STDOUT, ":utf8";

my $streamer = AnyEvent::Twitter::Stream->new(
    username => $user,
    password => $password,
    method   => $method || "sample",
    %args,
    on_tweet => sub {
        my $tweet = shift;
        print "$tweet->{user}{screen_name}: $tweet->{text}\n";
    },
    on_error => sub {
        my $error = shift;
        warn "ERROR: $error";
        $done->send;
    },
    on_eof   => sub {
        $done->send;
    },
    );

$done->recv;
$ perl test.pl track perl

という感じで実行します。
すると「perl」を含んだツイート内容がずらずらと出力されます。