nDiki : Net::Twitter
スポンサード リンク
Related term
2007年4月7日 (土)
■ 携帯電話(iモード)から Twitter を更新する

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 の返り値チェックとか、改善すべきところはいろいろあるけれど、自分用にはまずこれでいいかな。
気が向いた時に外出先から更新かけます。
- 携帯電話からの Twitter 投稿に tmitter を使ってみることにした (2007-07-26)
- Plagger で Twitter のあれこれをメールで通知 (2008-12-25)
- 今日のさえずり - くるぴかポッチャマ廻しにくい (2009-12-27)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- MAILPIA による Twitter リプライチェック (2008-11-18)
2009年8月28日 (金)
■ 今日のさえずり - 「チューペットみたいな何か」いっぱいあった

@ 2009年08月27日
- 09:28 前に座っている人のワイシャツの胸ポケットに現ナマがちらり。 [mb]
- 09:37 「もしよかったらこれ読んでください」とラブレター風の封筒を配るオネエサンたち。アイデアは認める。 #Akihabara L:秋葉原 [mb]
- 11:52 PAR::Environment の Pod 読むと PAR_GLOBAL_* 環境変数の説明が書いてあるんだけれど、ソースコード見ても全然使ってないんだよなあ。 *P3
- 12:27 HDD もう1台買った。デジカメデータ用。 [mb]
- 12:40 マクドナルドの最近のコールドカップのフタ、まんなかがオデキみたいでちょっと抵抗がある。 *P3
- 17:38 jQuery + Flexigrid を HTML 出力に追加。 *P3
- 19:45 えーっ、チューペット生産終了になってたのか。 [mb]
- 19:49 あれ? チューペットって真ん中で折れるやつだっけ? 折れないやつだっけ? [mb]
- 19:59 西友に行ってみたら「チューペットみたいな何か」いっぱいあった。焦るな。 [mb]
- 20:02 @hitoxu もう食べられないと思うと無性に欲しくなりますね、チューペット。 [mb]
- 23:30 2009年8月25日の歩行: 8690歩、6.69km、79分、5.03km/h、消費 319.2kcal、脂肪燃焼 45.6g、4.1エクササイズ。 *P3
- 23:32 2009年8月26日の歩行: 855歩、0.63km、9分、4.05km/h、消費 32.8kcal、脂肪燃焼 4.7g、0.4エクササイズ。 *P3
- 23:34 2009年8月27日の歩行: 7853歩、6.29km、58分、6.49km/h、消費 286.6kcal、脂肪燃焼 40.9g、4.2エクササイズ。 *P3
@ 2009年08月28日
- 09:24 スターバックスに寄って TO GO したいと起床してから思っているのだが、タンブラー会社にあるんだよなあ。 [mb]
- 09:43 やっぱり TO GOo した。会社に着いたら入れ替える。 L:秋葉原 [mb]
- 12:14 この間配っていたやつ、ラブプラスのだったのか。 *P3
- 12:59 明日8月29日から明後日8月30日の2日間、大井町で第2回大井フェスタ & 第55回大井どんたく開催。 #Oimachi *P3
- 15:00 Firefox に HTML Validator 入れた。 *P3
- 15:05 Flexigrid 化したページ Internet Explorer 7 でみたらヘッダがずれてる。 *P3
- 15:14 Flexigrid + Internet Explorer 7 のずれは DOCTYPE を XHTML 1.0 Strict にしたら直った。ふう。 *P3
- 15:46 XHTML 1.0 Transitional に変更 (Flexigrid のヘッダ行がずれないように th に width を指定するから)。 *P3
- 16:46 スターバックスのアニバーサリー タンブラー 12oz ちょっと欲しい。 *P3
- 19:01 ルイーダの酒場を見たいというので案内した。 L:秋葉原 [mb]
- 19:23 大井フェスタ & 大井どんたくの横断幕でてる。 #Oimachi L:大井町 [mb]
- 27:19 Net::Twitter が古いので dh-make-perl した。 *P3
- 今日のさえずり - ソフマップの店員にヨドバシカメラの場所たずねているジイチャン (2009-09-02)
- 今日のさえずり - すかいらーくといえば、今だに「愛・おぼえていますか」 (2009-09-18)
- 今日のさえずり - 限定 PORTER オリジナルトートバッグのせいで興奮 (2009-08-31)
- 今日のさえずり - ピカチュウと写真撮ってもらえる列に並んでる (2009-11-24)
- 今日のさえずり - くるぴかポッチャマ廻しにくい (2009-12-27)
2009年12月27日 (日)
■ 今日のさえずり - くるぴかポッチャマ廻しにくい

@ 2009年12月26日
- 07:04 今日から9連休スタート。
- 09:35 指定した Twitter のリストを表示する Google ガジェットないかな。
- 10:33 結局 Twitter API でリストのフィードとってくる proxy CGI スクリプト作って、Google リーダーでそれ登録して、フォルダに入れて、公開にして、iGoogle にそのフィード追加した。
- 10:34 Google リーダーをかませたのは巡回頻度を良きにはからってもらうことを期待して。
- 10:48 妻からスターバックスで To Go して帰る旨のメールを受信。
- 15:06 クリスマスツリー撤去。
- 16:10 キャベツ太郎食べたくなった。
- 17:49 今晩は細谷精肉店のきりたんぽ鍋セット。
- 19:12 きりたんぽ鍋頂きます。 http://movapic.com/...
- 01:57 さくらのレンタルサーバに Net::Twitter インストール。依存 Perl モジュールのインストール時 PERL5LIB 設定不足があってちょっとはまったがようやく入った。
@ 2009年12月27日
- 12:07 今回のマクドナルドのケータイクーポンしょぼい。
- 12:10 これから品川シーサイドのジャスコに行くんだけれど、フードコート混んでるかな?
- 12:56 品川シーサイドのジャスコ到着。落ち着いている模様。
- 13:09 タイミングよくフードコートで席確保。
- 13:57 くるぴかポッチャマ廻しにくい。
- 15:04 ニオイの出るモノ。 http://movapic.com/...
- 15:47 ジャスコでのお買い物終了。
- 16:51 新しいマグカップ。 http://movapic.com/...
- 19:24 エジソン折れたので2本目。
- 25:51 明日は IKEA 船橋に行くことにした。
- Plagger で Twitter のあれこれをメールで通知 (2008-12-25)
- 今日のさえずり - 待受画面が巨大仏像写真なのでビビった (2009-11-06)
- 今日のさえずり - VIP リスト作った (2009-11-01)
- 今日のさえずり - 年賀状作成特設会場とした (2009-12-30)
- 今日のさえずり - 11:00 にビルが燃える予定 (2010-04-08)
2009年12月30日 (水)
■ Net::OAuth を使って Twitter からフィードを取得

Twitter の replies (mentions) をフィードリーダや Plagger で読めるようにするために、Basic 認証で Twitter にアクセスしてフィードをとってきてそのまま出力する Perl CGI スクリプトを書いて使っていたのだが、やはり Basic 認証が嫌なので OAuth 認証に書き換えた。
Net::Twitter モジュールだと取ってきたフィードが Perl のデータ構造になってしまいそのまま再度出力するのが面倒なので、Net::OAuth モジュールでリクエストを作って投げるようにした。
以下エラー処理等を省略したコード。
Web サイトに設置すれば(CGI スクリプト側で認証を済ませて)認証無しで replies のフィードが取れるようになるので簡単にフィードリーダで読めるようになる。
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use LWP::UserAgent;
use Net::OAuth;
use Data::Random qw(rand_chars);
$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;
my $consumer_key = 'YOUR CONSUMER KEY';
my $consumer_secret = 'YOUR CONSUMER SECRET';
my $access_token = 'YOUR ACCESS TOKEN';
my $access_token_secret = 'YOUR ACCESS TOKEN SECRET';
my $url = 'http://twitter.com/statuses/replies.atom';
my $method = 'GET';
my $query = CGI->new;
my $request = Net::OAuth->request('protected resource')->new(
consumer_key => $consumer_key,
consumer_secret => $consumer_secret,
request_url => $url,
request_method => $method,
signature_method => 'HMAC-SHA1',
timestamp => time,
nonce => join('', rand_chars(ssize => 16, set => 'alphanumeric')),
token => $access_token,
token_secret => $access_token_secret,
extra_params => {count => '200'});
$request->sign;
my $ua = LWP::UserAgent->new;
my $response;
if ($method eq 'GET') {
$response = $ua->get($request->to_url);
}
else {
$response = $ua->post($request->to_url);
}
print $query->header('application/atom+xml; charset=utf-8');
print $response->content;
- 今日のさえずり - 年賀状作成特設会場とした (2009-12-30)
- Plagger で Twitter のあれこれをメールで通知 (2008-12-25)
- Twitter から「ログイン禁止中」くらった (2009-07-15)
- 今日のさえずり: 号外キタコレ (2010-06-02)
- twitterfeed から FriendFeed へ (2009-07-17)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.022714s / load averages: 0.34, 0.32, 0.27
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)





◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。
◇ 2GB 無料のオンラインストレージサービス Dropbox に次のリンク先から登録すると今なら 250MB プラス! → Dropbox