タイトルの通り。twitterはSNS的な使い方よりもミニブログというか、本当に独り言を書くだけのツールとして非常に重宝してます。ブログだと、一言だけ書きたいってのがなかなかやりにくくて・・・。
ただ、今の使い方としては、はてなのサイドバーに表示してあるので、
と、手順がめんどくさい!まあ、トップページのリンクを張っておけという話ではあるのですが・・・。Twitterのサイトはいつも遅いしなあ。RoRだからだよ!とか無駄に煽ってみるがよく分からない。
そんなわけで、とりあえずコマンドラインからお気軽にupdateしたいと思って作りました。世の中には色々クライアントがあるけど、俺にとってはどれもオーバースペックだな。updateできるだけでいいんだもん。
use strict; use warnings; use Net::Twitter; use Data::Dumper; use Encode; use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; my $term_encoding = 'shiftjis'; my $username = 'kkobayashi'; my $password = '**********'; my $update_text = shift; my $twit = Net::Twitter->new(username=>$username, password=>$password); my $result = $twit->update(convert_to('utf8', $update_text)); if($result){ print "update finished!\n"; print Dumper($result); } else{ print "update failed!"; } sub convert_to{ my ($enc_to, $str) = @_; my $encoding = guess_encoding($str); my $enc_from = ref($encoding) ? $encoding->name : $term_encoding; return encode($enc_to, decode($enc_from, $str)); }
CPANのおかげでWeb APIとか知らない俺でも簡単に作れるのはすごいなあ。
Net::Twitterのソースによると、updateの結果はJSONオブジェクトが返ってくるらしい。(追記:jsonToObjだからPerlのデータ型だった!てへり。)
sub update { my ( $self, $status ) = @_; my $req = $self->{ua}->post($self->{apiurl} . "/statuses/update.json", [ status => $status ]); return ($req->is_success) ? JSON::Any->jsonToObj($req->content) : undef; }
実行結果。
$ perl twitter.pl テストです update finished! $VAR1 = { 'source' => 'web', 'truncated' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' ), 'created_at' => 'Mon Oct 29 06:00:32 +0000 2007', 'text' => "\x{30c6}\x{30b9}\x{30c8}\x{3067}\x{3059}", 'user' => { 'location' => '', 'protected' => $VAR1->{'truncated'}, 'profile_image_url' => 'http://static.twitter.com/images/default_profile_normal.png', 'name' => 'kkobayashi', 'description' => '', 'url' => 'http://d.hatena.ne.jp/kkobayashi/', 'id' => 4511391, 'screen_name' => 'kkobayashi' }, 'id' => 371882712 };