2012/07/26

Recent entries from same category

  1. PerlでWindowsと親和性の高いreadlineが欲しい → あった「Caroline」
  2. Perl をゆるふわと語ろう
  3. cpanfile とは何か、なぜそれを使いたいのか
  4. plackup の --path 引数
  5. Github Notification API が出たので通知を Growl するの書いた。

キモトの関係で自分が発言したときに通知が欲しいですね


https://twitter.com/bulkneets/statuses/222928161023868929
作りましょう!
#!perl
use strict;
use warnings;
use utf8;
use Config::Pit;
use AnyEvent::Twitter::Stream;
use Growl::Any;
use YAML::Syck;

my $icon = 'https://api.twitter.com/1/users/profile_image?screen_name=bulkneets';
my $growl = Growl::Any->new(appname => "キモトwatcher"events => ["ヤバイ"]);

my $done = AnyEvent->condvar;

my $config = pit_get("api.twitter.com"require => {
    consumer_key        => 'consumer key on twitter',
    consumer_secret     => 'consumer secret on twitter',
    access_token        => 'access token on twitter',
    access_token_secret => 'access token secret on twitter',
});

binmode STDOUT":utf8";

my $streamer = AnyEvent::Twitter::Stream->new(
    consumer_key    => $config->{consumer_key},
    consumer_secret => $config->{consumer_secret},
    token           => $config->{access_token},
    token_secret    => $config->{access_token_secret},
    method          => 'filter',
    follow          => '3523861',
    on_tweet        => sub {
        my $tweet = shift;
        #warn Dump $tweet;
        #warn $tweet->{source};
        if ($tweet->{source} =~ 'キモト') {
            my $text = $tweet->{text};
            $growl->notify("ヤバイ""キモト"$text$icon);
            warn $text;
        }
    },
    on_error => sub {
        my $error = shift;
        warn "ERROR: $error";
        $done->send;
    },
    on_eof => sub {
        $done->send;
    },
);

$done->recv;
Windows の Growl For Windows でも動作します。
AnyEvent::Twitter::Stream の follow にスクリーンネームを渡していて少しハマったのは内緒。
token をどうやって取得するかは、プログラマなら知ってるはずなので頑張って下さい。
キモトwatcher
イベントで魚拓を取るも良し、メールするも良し、お役立て下さい。
Posted at by