Twitter をいろいろ遊んでみて「やはり携帯電話から更新できないと」と思えてきた。
携帯電話からメールを送る事で Twitter にアップデートをかけてくれるゲートウェイを設置できれば一番いいのだけれど、そのようなメールアドレスを作る場所が今はない(さすがに会社のサーバはまずい)。
ということでiモードから更新をかけられるように短い CGI プログラムを書くことにした。 CPAN には Net::Twitter という Perl モジュールがあるのだが、JSON::Any (と JSON::XS / JSON / JSON::DWIW / JSON::Syck のどれか)が必要で、ちょっと大げさなので今回は使用は見送り。 普通に CGI.pm と LWP::UserAgent で書いた。
#!/usr/bin/perl -w use 5.005_03; use strict; use CGI qw(-no_xhtml); use Jcode; use LWP::UserAgent; my $query = CGI->new; my $user_name = $query->param('u'); my $password = $query->param('p'); my $status = $query->param('s'); $user_name = '' unless defined $user_name; $password = '' unless defined $password; $status = '' unless defined $status; my $message = ''; if ($user_name ne '' && $password ne '' && $status ne '') { my $ua = LWP::UserAgent->new; Jcode::convert(\$status, 'utf8', 'sjis'); $ua->credentials('twitter.com:80', 'Twitter API', $user_name, $password); my $request = $ua->post('http://twitter.com/statuses/update.json', {status => $status . ' '}); if ($request->is_success) { $message = '<p>OK</p>'; } } print $query->header(-type => 'text/html', -charset => ''); print '<html><head><title>Twitter update</title></title><body>'; print '<form method="post" action="twitter">'; print 'ユーザ名:', $query->textfield('u'), '<br>'; print 'パスワード:', $query->password_field('p'), '<br>'; print 'ステータス:', $query->textfield('s'), '<br>'; print '<input type="submit">'; print '</form>'; print $message; print '</body></html>';
とりあえずこれで、iモードから送信できることを確認。 パスワードの入力が面倒だけれども、サーバ側に書いておくのも嫌なので毎回送ることにした。FOMA 端末側には定型文として保存しておく以外にいい手はないのかな。
最初うまく送れなくてなんだろうと思ったが、あきやん氏の「Twitterで日本語を入力する方法 (akiyan.com)」の記事にある
といった日本語を入力する際の注意点がらみだったようである。 とりあえず CGI プログラムの方で最後に必ずいわゆる半角空白を追加するようにしておいた。
文字数チェックとか Twitter API の返り値チェックとか、改善すべきところはいろいろあるけれど、自分用にはまずこれでいいかな。
気が向いた時に外出先から更新かけます。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。
ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。
※内容は個人的見解であり所属組織とは関係ありません。