携帯からメールを送ると twitter にツイートしてくれるアプリを作成する修行
携帯から twitter にツイートしたい。とりあえずツイートできればよくて、TL が見えなくても構わない。メールを送ったらその内容をツイートしてくれればいい。メールを送るだけならパケットも少なくて済むし。そういうアプリはすでにあるだろうが、自分専用のを作ってみたい。
ということで作ってみた。
use strict; use warnings; use Encode; use FindBin; my $base_dir = $FindBin::Bin; my $config = do { use YAML::Tiny; my $c = YAML::Tiny->read("$base_dir/config.yaml"); $c->[0]; }; my $tweet = do { use Email::MIME; my $src_text = decode('iso-2022-jp', do { local $/; <> }); my $mail = Email::MIME->new($src_text); my $from = $mail->header('From'); if (my ($addr) = $from =~ qr{<(.*)>}xms) { $from = $addr; } warn $from; exit() if $from ne $config->{valid_email}; $mail->body . ' [darezo]'; }; use Net::Twitter my $nt = Net::Twitter->new(traits => ['API::REST', 'OAuth'], consumer_key => $config->{consumer_key}, consumer_secret => $config->{consumer_key_secret}, ); $nt->access_token($config->{access_token}); $nt->access_token_secret($config->{access_token_secret}); $nt->update($tweet); warn encode_utf8($tweet); __END__
特定のアドレスからのメールしか受け付けないようにしている (valid_email)。これで私の携帯からしかこのアプリは使えない。
このスクリプトをメール受信のタイミングで呼び出さなければならない。まずは Plesk でメールアカウント (仮りに moge としておく) を作成。/var/qmailmailnames/mato.me/moge/.qmail に次の一行を追加する。
| /usr/bin/perl /home/takeyuki/darezo/darezo.pl
これで出先からも気軽にツイートできる。