Net::Twitterで超簡単にPostしてみる
はじめに
PerlでTwitterにPostする・各種情報の取得を行なうにはNet::Twitterモジュールが簡単です。
Net::TwitterはCPANから取得できます。ただしNet::Twitterを利用するにはLWP::UserAgentとJSON::Anyをあらかじめインストール(これもCPANで取得できる)しておく必要があります。
基本的な使い方:送信編
use Net::Twitter; use Encode; use encoding 'UTF-8', STDOUT => 'cp932'; my $tw = Net::Twitter->new( username=>"YourTwitterName", password=>"YourTwitterPassword" ); $status = "テスト送信"; utf8::encode($status); my $result = $tw->update($status); if($result != undef){ # 送信成功した場合はupdateした内容が$resultに格納される } else{ # 送信失敗 }
Net::Twitter->new()でユーザ名・パスワードを設定。他にもクライアント名などが設定できますが今回はパス。
あとはupdateメソッドを使って送信。これだけ。必要あれば送信結果も取得できます。
送信文字コードについて
Twitterに送信する文字コードはUTF8ですので、内部文字コードもUTF8に。ソースもUTF8とかにしとくといいです。
ってことでutf8::encodeを利用してUTF8フラグを除去した上でTwitterに送信します。こうしないと化けるというか正常なPostができません。
(試しにutf8::encode()をコメントアウトして送信してみればいいですね)
UTF8やUTF8フラグについては
http://www.rwds.net/kuroita/program/Perl_unicode.html
で解りやすく説明してくれているので読んでおくと吉。
送信に対する結果と応答を取得する
送信に成功すると送信結果的なものが返ってきます。Dumperを利用して表示させると
use Data::Dumper; if($result != undef){ print Dumper($result); } ↓ $VAR1 = { 'source' => 'Perl Net::Twitter', 'in_reply_to' => undef, 'truncated' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ), 'created_at' => 'Thu Apr 17 12:34:56 +0000 2008', 'text' => "\x{30c6}\x{30b9}\x{30c8}\x{9001}\x{4fe1}", 'in_reply_to_user_id' => undef, 'user' => { 'location' => '', 'followers_count' => 0, 'protected' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ), 'profile_image_url' => 'http://static.twitter.com/images/default_profile_normal.png', 'name' => 'YourTwitterName', 'description' => '', 'url' => undef, 'id' => 00000000, 'screen_name' => 'YourTwitterName' }, 'id' => 000000000 };
statusID/update日時などが返ってきますので
if($result != undef){ $create_at = $result->{'created_at'}; $id = $result->{'id'}; }
こんな感じで取得。
また、送信結果のステータスコード・ステータス文字列もhttp_code・http_messageメソッドで取得できます。正常に送信できると「200/OK」が返ります。
$http_code = $tw->http_code(); $http_message = $tw->http_message();
たとえばユーザ名・パスワードに不一致が発生すると「401/Unauthorized」が返ってきます。このステータスコード/文字列の説明は
[観] Twitter API 仕様書 (勝手に日本語訳シリーズ)
の仕様の「HTTPステータスコード」の部分に記載されています。送信失敗時にログとして保存する、などに利用できそうです。
送信編はここらへんにして、そのうち受信について書きます。