理系学生日記

おまえはいつまで学生気分なのか

gmail 宛に届く follow メールに対して自動で follow 返しする

以前に nipotan さんが,以下のようなスクリプトを作っていました.

しかしながらぼくが twitter に登録しているのは gmail のアドレスですから,こういうのできないよなーと思って思考停止していた.

よくよく考えるとそんなことはないですね.gmail はPOP や IMAP を提供しているんだから,それ使えば良いじゃないかと.
というわけで,以下のスクリプトを cron で回すことにしました.現状は,なんとスクリプトが起動するたびに INBOX 配下のメールを全走査する形になってしまっているので,gmail 上で twitter からくるメール用にディレクトリを掘って,そこのみを対象にした方がいろいろと良いんじゃないかと思います.

#!/opt/local/bin/perl
use strict;
use warnings;
use Net::IMAP::Simple::SSL;
use Net::Twitter;

my $imaps = Net::IMAP::Simple::SSL->new( 'imap.gmail.com' )
    or die "Unable to connect to IMAP: $Net::IMAP::Simple::errstr\n";

$imaps->login( 'your gmail account', 'your gmail password' )
    or die "Authentication failed";
my $num = $imaps->select( 'INBOX' );

my (@followers, $msgno);
for $msgno ( 1 .. $num ) {
    my $msg = join '' => @{ $imaps->get($msgno) };
    my ($name) = $msg =~ m{^\s+http://twitter\.com/(\w+)\s+$}m;

    next unless $name;
    push @followers, $name;
    $imaps->copy($msgno, 'INBOX/read');
    $imaps->delete($msgno);
}

my $twit = Net::Twitter->new(
    username => 'your twitter name',
    password => 'your twitter password',
);
$twit->create_friend($_) for @followers;