Fork me on GitHub

2009/07/23

Recent entries from same category

  1. Web::Scraperでvim.orgのkarmaを調べる。 Hatena
  2. perldocのbash-completionが激しく便利でうれしょん出た。 Hatena
  3. Perl音痴な私がPerlを使っている理由 Hatena
  4. TatsumakiとDUI Streamを使って画像ストリーミングサーバ作ってみた。 Hatena
  5. のび太の物は俺の物。俺の物は俺の物。 Hatena

はてな
miyagawaさんのAnyEvent::Twitter::Streamを使って「NullPointerException」をtrackして「Ga!!」を返信するスクリプトを書いてみた。trackにマルチバイトが使えないのが残念。「がっ!!」にしても良いけど、出来れば欧米の方達にも反応したい。
#!/usr/bin/perl
use strict;
use warnings;
use Config::Pit;
use AnyEvent::Twitter::Stream;
use Net::Twitter::Lite;

binmode STDOUT, ":utf8";

my $config = pit_get("nullpo-ga", require => {
        "username" => "your username on twitter.com",
        "password" => "your password on twitter.com"
    });

my $nt = Net::Twitter::Lite->new(
    username => $config->{username},
    password => $config->{password},
);

my $done = AnyEvent->condvar;
my $streamer = AnyEvent::Twitter::Stream->new(
    username => $config->{username},
    password => $config->{password},
    method   => "track",
    ( track => 'NullPointerException' ),
    on_tweet => sub {
        my $tweet = shift;
        print "$tweet->{user}{screen_name}: $tweet->{text}\n";
        eval { $nt->update("\@$tweet->{user}{screen_name} Ga!!") };
    },
    on_error => sub {
        my $error = shift;
        warn "ERROR: $error";
        $done->send;
    },
    on_eof   => sub {
        $done->send;
    },
);

$done->recv;


追記
miyagawaさんから返信のupdateでブロックしちゃうのでAnyEvent::Twitter使えば良いと教えて貰いました。
#!/usr/bin/perl
use strict;
use warnings;
use Config::Pit;
use AnyEvent::Twitter;
use AnyEvent::Twitter::Stream;

binmode STDOUT, ":utf8";

my $config = pit_get("nullpo-ga", require => {
        "username" => "your username on twitter.com",
        "password" => "your password on twitter.com"
    }
);

my $done = AnyEvent->condvar;

my $twitty = AnyEvent::Twitter->new(
    username => $config->{username},
    password => $config->{password},
);

my $streamer = AnyEvent::Twitter::Stream->new(
    username => $config->{username},
    password => $config->{password},
    method   => "track",
    ( track => 'NullPointerException' ),
    on_tweet => sub {
        my $tweet = shift;
        print "$tweet->{user}{screen_name}: $tweet->{text}\n";
        $twitty->update_status("\@$tweet->{user}{screen_name} Ga!!", sub {
                my ($twitty, $status, $js_status, $error) = @_;
                if (defined $error) {
                    warn "ERROR: $error";
                }
            }
        );
    },
    on_error => sub {
        my $error = shift;
        warn "ERROR: $error";
        $done->send;
    },
    on_eof   => sub {
        $done->send;
    },
);

$done->recv;
Posted at 01:39 in ソフトウェア::lang::perl | WriteBacks (1) | Edit
Tagged as: perl, twitter
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark

blog comments powered by Disqus
WriteBacks

ドラクエ9Ⅸドラゴンクエスト9ⅨR4マジコンパッチ回避コードフリーク攻略

全職業 経験値 9999999、戦闘後HP・MP回復、会心の一撃、小さなメダル 999個、所持金999999G、その他山盛り!

Posted by ドラクエ9Ⅸドラゴンクエスト9ⅨR4マジコンパッチ回避コードフリーク攻略 at 2009/07/26 (Sun) 09:41:48

TrackBack ping me at
Post a comment

writeback message: Ready to post a comment.