2010.08.22 追記
このエントリはBasic認証を通してTwitter APIを利用するもので、10年8月末で廃止されます。
OAuth対応したPHP投稿プログラムは、下記エントリを参照してください。
前回「Twitterのタイムラインを取得するPHPスクリプト 」にてTwitter上のタイムラインを取得するPHPスクリプトを作ってみましたが、今回はTwitterへ投稿するためのスクリプトを書いてみました。
同じようにTwitterのAPIを用いれば簡単に書くことができます。
作るにあたって下記のサイトを参考にさせていただきました。
PHPでTwitterに投稿 @ HIRACCHI H.D.
私のほうで作ったPHPスクリプトは前回のタイムラインを取得するスクリプトと形式をあわせるために、PEARのHTTP/Clientを使っています。
また、コマンドラインから使えるように引数で指定した文字を投稿するような仕様にしてみました。
PHP5.1.6(CentOS5.3)上で動作確認しています。
Twitterへ投稿するためのPHPスクリプト
<?php
require_once "HTTP/Client.php";
$username = "foo";
$password = "bar";
// TwitterAPI用のURL
$url = "http://twitter.com/statuses/update.xml";
// 標準入力からの内容をセット
$data = array("status" => trim($argv[1]));
$basic = array('Authorization'=>'Basic '.base64_encode($username.':'.$password));
$client = new HTTP_Client(null, $basic);
$client->post($url, $data);
$response = $client->currentResponse();
?>
Twitterへ投稿する際もタイムラインを取得するのと同様に、APIで指定されたURLへ引数付で投稿したい文字列を指定します。
ただし、つぶやきの投稿はPOSTメソッドしか受け付けてくれません。
PEARのHTTP/ClientにてPOSTメソッドを使用する際には、POSTする内容を配列に指定しておかなければならないため、$argv[1]にて取得した標準入力の内容をセットしています。
使い方はこんな感じで。
$ php twitterpost.php "てすと"
ただし、このプログラムは標準入力の内容をそのまま投げていますので、事前に文字数のチェックなどをかけておいたほうが良いと思います。
また、投稿数の制限などAPI上の仕様も考慮しなければならないため、投稿が成功したかどうかの判断を加えたほうがよいでしょう。($responseの中に投稿した内容やTwitterからの応答のデータが含まれていますので、その辺りから判断できます)
前回のタイムラインを取得するスクリプトと組み合わせれば、コマンドラインから引数を変えて投稿したりタイムラインを見たりというようなプログラムも書けるかと思います。
関連記事
Twitterのフレンドやフォロワーを取得するPHPスクリプト
Twitterのお気に入りをTumblrへ投稿するプログラム書いたよ
データで見るTwitter: リプライの平均時間は23分38秒
bit.lyのAPIを使ったURLの短縮と元ソースの表示をするPHPスクリプト