某ゼロっぽいbombtterクローンであるところのzerotterを作ってみました.tetsuwo_botのインスパイアでもあります.友達と話していて思いついたのでとりあえず書いてみた感じです.
bombtterがすごくがんばってくれているおかげで,クローンを作るのは異常に簡単でした.完成したのが以下のスクリプトでcronでまわしています.
use strict; use warnings; use utf8; use Net::Twitter; use XML::Feed; use URI::Fetch; use URI; use DateTime; my $SERIF = [ ["このゼロが命じる… ", "を爆破せよ!"], ["全力で", "を爆破せよ!"], ["今ここに", "の爆発を宣言する!"], ["そうだな… ", "は…… 爆発しろっ!"], ]; # 最後に更新した時刻を調べるのにファイルを使う ( via Plagger::Rule::Fresh ) my $FRESH_PATH = "./update_time"; my $now = time; my $mtime = (stat($FRESH_PATH))[9]; if ($mtime) { utime $now, $now, $FRESH_PATH or die("$FRESH_PATH: $!"); } else { open my $fh, ">", $FRESH_PATH or die("$FRESH_PATH: $!"); close $fh; $mtime = (stat($FRESH_PATH))[9]; } my $mtime_dt = DateTime->from_epoch( epoch => $mtime ); # bombtterのRSSを拝借する my $rss_url = URI->new('http://twitter.com/statuses/user_timeline/14152694.rss'); my $res = URI::Fetch->fetch($rss_url) or die URI::Fetch->errstr; my $rss_content = $res->content; my $feed = XML::Feed->parse(\$rss_content) or die XML::Feed->errstr; # twitterを準備 my $twitter = Net::Twitter->new(username=>'zerotter', password=>'PASSWORD'); for my $entry ($feed->entries) { # 爆発させる対象を取得 my $entry_content = $entry->content->body; $entry_content =~ s/^bombtter:\s+//xms; $entry_content =~ s/\s*が爆発しました。\s*$//xms; my $bombee = $entry_content; # セリフをランダムで作る my $serif = $SERIF->[rand() * scalar(@$SERIF)]; # まだ発言していなければ発言 if(DateTime->compare($entry->issued, $mtime_dt) == 1) { $twitter->update( $serif->[0] . $bombee . $serif->[1] ); sleep 1; } else { last; } }
$SERIFを適当にいじると,簡単にセリフを足したり変えたりできます.bombtterクローンを作るのはbombtterのおかげで非常に簡単なので,習作にどうでしょうか.あと,追加のゼロのセリフも募集しています.
てか,そろそろもうちょっとまじめなプログラムをかかないとなぁ.