コマンドラインから引数をつかってTwitterにつぶやくPerlスクリプトを作った。
仕様
・コマンドラインオプションを使って呟ける。
・入力側のコンソールがUTF-8じゃなくてもOK(たぶん)
・引数に半角スペースが含まれていてもOK
ソース
#
# コマンドラインから引数を渡してツイートするスクリプト
#
use strict;
use warnings;
use Encode;
use Encode::Guess qw/euc-jp shiftjis 7bit-jis utf8/;
use Net::Twitter;
#認証
my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => '指定されたConsumer key',
consumer_secret => '指定されたConsumer secret',
ssl => 1,
);
#受け取った引数をまとめて、utf8に変換
my $data = "";
foreach( @ARGV ){
$data = "$data $_";
}
my $code = guess_encoding( $data );
my $inside = decode($code->name, $data);
#ツイート
$twit->access_token ('指定されたAccess Token');
$twit->access_token_secret('指定されたAccess Token Secret');
$twit->update($inside);
exit;
__END__
初期設定
大前提としてPerlとPerlのモジュールNet::Twitterがインストールされてる必要があります。
Net::Twitterに関しては
前回のちょっとしたメモがあります。(たぶん役にたたない)
次に自分用の
Consumer keyや
Access Tokenを取得する必要があります。
下記のサイトを参考にしてください。
自分のスクリプトの大部分もここのものをベースにしています。
実用! PerlでコマンドラインからTwitter投稿(OAuth対応)取得できたらソースコードの下記部分を編集してください
consumer_key => '指定されたConsumer key',
consumer_secret => '指定されたConsumer secret',
$twit->access_token ('指定されたAccess Token');
$twit->access_token_secret('指定されたAccess Token Secret');
編集後のソースコードを拡張子を.plにして保存(文字コードはUTF-8)
導入
基本的にコマンドラインとコマンドラインオプションが使える環境からならどこからでも使えます。
作ったスクリプトファイルのパス + 半角スペース + オプション(つぶやき)
たとえば自分の場合ですと
C:¥MyPerl¥Mine_Twitter_Client.pl hello!!
■導入例1 - Fenrirでツイートinstant.iniを編集して[InstantCommand]に下記のように追加
/t=""C:¥MyPerl¥Mine_Twitter_Client.pl" %A"
あとはこんな感じにFenrirに打ち込んで
/t つぶやき

でつぶやける。
■導入例2 - CraftLaunchでツイートコマンド追加画面で
名前:Tweet
ファイル:C:¥MyPerl¥Mine_Twitter_Client.pl
てなかんじにコマンド登録して
入力枠に
Tweet;つぶやき

でつぶやける。
■導入例(ネタ) - コマンドプロントでツイートもしかしたらコマンドプロントを使っているときに唐突につぶやきたくなることがあるかもしれない。
そんな時も大丈夫!
C:¥MyPerl>Mine_Twitter_Client.pl ZAMAAAAAA!!!!

作成動機とか感想とか
本来の使い方である「つぶやき」、本当に些細なひとりごとのためにクライアントソフトを起動するのは馬鹿らしく、起動してるうちにつぶやく気も失せるというものである。
そういう状況をなくしたかったというのがひとつの作成動機。
もうひとつ、今自分はPerlをゆるゆる勉強中で、Perlと主にモジュールについて理解を深めたかった。
ひとつ目に関しては次第点、インタプリンタ言語だけあっておそいけどね^^;
ふたつ目は、うーん・・・理解が深まったような深まってないような
モジュールに関してはどっかのオブジェクト指向の解説にもあったように
「中で何が起きてるかわからなくても安全に使用できる」という点は実によく理解できた。
実際大変だったのはインストールと、文字コードの処理問題
現代Perlでは外からデータを持ち込んだ際に内部用の文字コード(UTF-8)に変換し、出力する際に任意のコードにエンコードすることが推薦されてる。
今回の場合、内部UTF-8に変換するまではできたとしても、外部に出力するUTF-8にエンコードする際になにかおかしなことが起きてるらしく、実際のブラウザの画面では文字化けした呪文みたいなつぶやきになってしまった。
結局、内部UTF-8をそのままNet::Twitterに渡してつぶやいたところ文字化けせず動作したのでそれを使っているが、はたしてこれで良かったのだろうか。
お世話になったサイトなど
実用! PerlでコマンドラインからTwitter投稿(OAuth対応)Perl TIPSperlのEncodeモジュールについて