決まった時刻に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"に残します。

何に使うかって? ナイショです。

Posted by お市のかた