Twitterへ投稿するPHPスクリプト | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

2010.08.22 追記

このエントリはBasic認証を通してTwitter APIを利用するもので、10年8月末で廃止されます。

OAuth対応したPHP投稿プログラムは、下記エントリを参照してください。


OAuthを使ってPHPからTwitterへ投稿する



前回「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からの応答のデータが含まれていますので、その辺りから判断できます)


前回のタイムラインを取得するスクリプトと組み合わせれば、コマンドラインから引数を変えて投稿したりタイムラインを見たりというようなプログラムも書けるかと思います。