読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

AnyEvent::Twitter::Streamを使ってみた

というわけで昨日に引き続き, 大学の課題でやっていることをちらほらブログにまとめてみます. 情報的には目新しいものとかはないですけど, まあ自分用の備忘録ってやつですね.

昨日導入したGrowl::Anyと, AnyEvent::Twitter::Streamを使って, 自分宛のつぶやきが来る度にポップアップするツール(?)を作ってみました.

use strict;
use warnings;
use utf8;

use AnyEvent;
use AnyEvent::Twitter;
use AnyEvent::Twitter::Stream;
use Config::Pit;
use Growl::Any;

my $auth = Config::Pit::get('twitter');
my $cv = AE::cv;

my $method = 'filter';
my $name = '__papix__';

my $growl = Growl::Any->new;
$growl->register('twitter.pl', ['Default']);

my $stream = AnyEvent::Twitter::Stream->new(
	%$auth,
	method => $method,
	track  => '@' . $name,
	on_tweet => sub {
		my $tweet = shift;
		$growl->notify($tweet->{user}->{profile_image_url}, $tweet->{user}->{name}, $tweet->{text}, $tweet->{user}->{profile_image_url});
	},
	on_error => sub {
		my $message = shift;
		print "ERROR: $message\n";
		$cv->send;
	},
);

$cv->recv;

__END__

f:id:papix:20120522235332p:plain

上から来るぞ! とか言いつつ下から出てきてますが, まあ仕様というやつです.

ちなみに, 授業の課題で取り組んでいる内容ですが...
音声認識を使った'何か'を作る」という課題を与えられているので, 友人とチームを組んで, 「音声で操作する簡易ツイッタークライアントのようなもの」を作ることになっています.
自分は主に, 「利用者に対してツイートが来たことを教える」機能(要するに, 上に書いたようなやつ)まわりを担当する... 感じです. 多分.

後は, 出来れば「ツイートが来たことを音声で教える」機能も付けたいな, という話があったので, 明日はそれについて, ブログを書こうかなーと思います.

...しかし, 今更ですがAnyEvent系のモジュールって便利ですね! これはいろいろ役に立ちそう(遊べそう)なので, 積極的に使っていこうと思います.