決まった時刻にTwitterに自動投稿
LeopardでCPANモジュールをインストールで、Net::Twitterをインストールしました。何故かと言うと、Twitterに自動投稿したかったのです。
まず、PerlのNet::Twitterでどうやって投稿するか調べて、参考にしたのが次の記事です。
この記事のプログラムが非常に良く出来ていて、大変勉強になりました。ありがとうございます。
この記事とそっくり同じなのですが、少しだけ改良を加えたのが、次のプログラムです。プログラムを起動してから、オプションで設定した時間の後に、投稿するようにしました。
部分引用ですとわかり辛くなるので、全文掲載させていただいております。 変更した部分に、色をつけました。重ね重ね、ありがとうございます。
#!/opt/local/bin/perl -wT # usage: update.pl [delay] use strict; use Net::Twitter; use Encode; use encoding 'UTF-8', STDOUT => 'cp932'; my $tw = Net::Twitter->new( username=>"YourTwitterName", password=>"YourTwitterPassword" ); my $status = "定時連絡"; utf8::encode($status); my $delay = (exists $ARGV[0] > 0) ? $ARGV[0] + 0 : 0; sleep $delay; my $result = $tw->update($status); if($result){ # 送信成功した場合はupdateした内容が$resultに格納される my $create_at = $result->{'created_at'}; my $id = $result->{'id'}; print "Success!\n"; print "$create_at $id delay=$delay\n"; } else { # 送信失敗 print "Failed!\n"; }
1行目の、Perlのパスは、環境に合わせて直して下さい。-wTと言うオプションとuse strictは、汚染を防ぐ為と変数を厳格にチェックする為の設定です。
YourTwitterNameとYourTwitterPasswordの部分も変更して下さい。
あらかじめ、chmod +x update.plで実行フラグを付けて、パスの通った所に置いて下さい。
使い方は、ターミナル.appからupdate.pl 10などとします。10の意味は、起動してから大体10秒後に投稿すると言う意味です。オプションを付けないと、直ちに投稿します。オプションの設定部分は、非常に簡略化しています(さぼっています)。
$ update.pl 10 Success! Thu Jun 03 12:34:01 +0000 2010 15321820241 delay=10
このプログラムをcronで起動するようにしてみます。
$ crontab -e
エディタが開きますので、例えば、次のように設定します。
59 11 * * * ~/bin/update.pl 30 >> ~/update.log
毎日、11:59に起動して、その大体30秒後に投稿します。投稿結果を、ホームディレクトリのログファイル"update.log"に残します。
何に使うかって? ナイショです。
ディスカッション
コメント一覧
まだ、コメントがありません