TwitterのBotを作ってみた。

         

2011年はWebで面白いことをしようかと思い、手始めにTwitterのBotでも作ることにしました。

まずは定期的に何かしらのつぶやきをするBotにします。

私のSPECとしては、
「phpはスクラッチで書いたことは無いけどperlはある程度わかるのでphpもわかるはず!?」
「Linuxの運用・設定周りは大体わかる」
という中途半端な状態です。。。

以下のサイトを参考にさせていただきました。

Twitterを100倍楽しむためのbot開発基礎講座

1.Botアカウント作成
まずは、Bot用のアカウントを作成します。
通常のユーザアカウントと同じ要領です。

2.アプリケーションの登録
Botはアプリケーションとしてみなされるので、登録が必要みたいです。

OAuthでアプリケーションを登録するらしい。
OAuthに関しては以下で勉強。(技術評論社様様)
ゼロから学ぶOAhth

先に作成したBot用のアカウントでTwitterにログインをした後で、下記URLにアクセスしhttp://dev.twitter.com/appsの「新しいアプリケーションを追加」から登録。

以下を設定し、その他の項目は任意に埋める。

アプリケーションのウェブサイトURL: 適当なURL
アプリケーションの種類: クライアントアプリケーション
標準のアクセスタイプ: Read & Write

次の画面で「TWITTER API TERMS OF SERVICE」を「I ACCEPT」にして、登録。

登録が完了すると、[Consumer key]や、[Consumer secret]等が取得できるので、これをアプリケーションで使う。

3.アプリケーション作成
OAuthトークンを取得する必要があるらしく、参考ページのプログラムを実行してみる。
これに取得した、[Consumer key]と[Consumer secret]を埋め込む。

ソースをそのまま使うとすれば、事前準備として、http://github.com/abraham/twitteroauth/downloadsで落とした「twitteroauth」を解凍してできたファイルのうち、「OAuth.php」「twitteroauth.php」をプログラムと同じディレクトリに置いておく必要がある。(バージョンが古いのが気になりますが、0.2.0-beta3.zipを使いました。)

ソースは参考ページのものをそのまま使わせていただいています。
http://gihyo.jp/dev/serial/01/twitterbot/0003?page=2

任意の名前でソースを保存して、phpコマンドで実行。

$ php test.php

プログラムを実行するとURLが表示されるので、使用するアカウントにログインしたままでアクセスすると、アプリケーションの使用許可を問われるので、許可へ。すると、アクセスコードが表示されるので、それをプラグラムに入力。

これで、OAuthトークンが得られます。
得られたトークンをつぶやき用プログラムに記載。
これも、サンプルをそのまま使わせていただきましたが、最後のhttp_codeだけ表示するようにちょっとだけ改造。
http://gihyo.jp/dev/serial/01/twitterbot/0003?page=2

変えたところ。
if($http_code == "200" && !empty($response)) {
print "ok\n";
} else {
print "http_code: $http_code\n"; ←この程度ですが。。
print "result: ng\n";}         ←
?>

さて、twitter.phpとして保存し、いざ実行!

$ php twitter.php
PHP Fatal error: Call to undefined function json_decode() in /home/user/twitteroauth.php on line 159

json_decodeがわからないと。。。

jsonをインストール

# pecl install json

install ok: channel://pear.php.net/json-X.X.X
できたっぽい??

あとは、json.iniの設定

# vi /etc/php.d/json.ini
: 
extension=json.so 追記

または、面倒なときはechoで流しこむww

# echo "extension=json.so" >> /etc/php.d/json.ini

そして、リトライ。

$ php twitter.php
ok
成功しました!

4.tweet時間の登録
まずは、決められた時間につぶやくだけの機能限定なので、cronで実行ファイルを登録するだけ。

$ crontab -e
:
# 分 時間 日 月 曜日 コマンド
00 12 * * * php /home/user/twitter.php ←毎日お昼につぶやくとして

以上、所要時間はトータルで2時間もあれば十分Botが作成できると思います。
とはいえ、ここから人っぽく進化させるのがさらに難しいんでしょうね。

讃岐うどんBot
http://twitter.com/#!/sanuki_udon_88

下記サイトも参考にさせていただきました。
http://www.softel.co.jp/blogs/tech/archives/973

コメントを残す