Twitter botの作成法を紹介します。
面倒なOAuth認証は abraham / twitteroauthライブラリを使用します。
(2013/02/23追記:codebird-phpというライブラリもよさげだそうです。いずれ試してみるかもしれません。)
今回は定期的につぶやくbotをPHPで作成してみます。
環境的なこと
PHPが動くマシンが必要です、WindowsでもLinuxでも(Macでも)OKです。
botなので24時間動かせる環境が望ましいかもしれません(レンタルサーバを借りるなどがオススメです)。
開発の流れ
以下手順で定期的につぶやくbotが完成します。
1 | アプリからつぶやくためのtokenを取得する | アプリからTwitterへアクセスできるようにするtoken(パスワード的な文字列)を取得 |
2 | TwitterにつぶやくPHPスクリプトを書く | 起動すると一発Tweetするだけの単純なPHPスクリプトを書く。 |
3 | PHPスクリプトを定期的に起動する | 定期的にPHPスクリプトが起動するようにする |
1. アプリからつぶやくためのtokenを取得する
アプリからつぶやくのに必要なのは以下4つの文字列です。
Consumer key
Consumer secret
Access token
Access token secret
My applications | Twitter Developersで上記文字列の発行を行います。
Create a new applicationをクリックします。
Name | アプリの名前です。~から等とアプリ名として表示されるアレです。 |
Description | アプリの概要。特に使用しませんが何か入れておきましょう。 |
Website | アプリのサイトです。特に使用しませんが何か入れておきましょう。 |
Callback URL: | 自分以外にアプリを使ってもらう際にTwitter認証後に戻る用のURLのようです。 特に使用しませんが何か入れておきましょう。 |
上記を入力し、規約に同意し、Create Your Twitter applicationボタンをクリックします。
無事成功したら、OAuth settingsの項目に、
Consumer key、Consumer secretが表示されていることを確認します。
次にSettingsのタブのApplication typeの設定で、
AccessをRead and Writeにしておきます。(Readのみだとアプリからつぶやくことはできません。)
再びDetailタブに戻り、Create My Accecss Tokenボタンをクリックします。
Access token、Access token secretが表示されていることを確認します。
また、Access levelがRead and writeになっていることも確認します。
2. TwitterにつぶやくPHPスクリプトを書く
以下にサンプルコードを紹介します( tweet_test.php )
<?php main(); //******************************************************************************************** /** * @brief main関数 * サンプルコードのmain関数です。 * @author @loftkun */ //******************************************************************************************** function main() { Logput("main() : start"); //つぶやく文字列を決定 $tubuyaki = "【定期つぶやき】モヤモヤさまぁ~ず2が好きな方はフォローお願いします。"; //つぶやく $result = TwitterPost($tubuyaki); Logput("main() : end"); } //******************************************************************************************** /** * @brief TwitterPost関数 * つぶやくサンプルです。 * @author @loftkun * * @param[in] $tubuyaki つぶやく文字列 * * @return true 成功 * false 失敗 */ //******************************************************************************************** function TwitterPost($tubuyaki) { Logput("TwitterPost() : start"); //Twitterizerライブラリを取り込む require_once("./twitteroauth.php");//環境によってパスの書き方は変わります。 //token文字列 //https://dev.twitter.com/appsで発行したtokenを設定して下さい。 $consumer_key ="hoge"; $consumer_secret ="hoge"; $oauth_token ="hoge"; $oauth_token_secret ="hoge"; //TwitterOAuthのインスタンスを生成 $twitter = new TwitterOAuth( $consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret ); //メソッドを指定(ここではつぶやくメソッドを指定) $method = "statuses/update"; //パラメータを指定(ここではつぶやく文字列を指定) $parameters = array("status" => $tubuyaki); //メソッドを実行(ここではつぶやきます。) $response = $twitter->post($method, $parameters); //戻り値取得 $http_info = $twitter->http_info; $http_code = $http_info["http_code"]; if($http_code == "200" && !empty($response)) { //つぶやき成功 Logput("TwitterPost() : success end"); return true; } else { //つぶやき失敗 Logput("TwitterPost() : faile end"); return false; } } //******************************************************************************************** /** * @brief おまけ。Logput関数 * 標準出力とログファイルにログを吐き出します。 * 文頭に現在時刻、文末に改行をつけてくれます。 * @author @loftkun * @param[in] $log ログ文字列(末尾に改行は不要) */ //******************************************************************************************** function Logput($log) { //現在時刻を付加 $date = date('Y/m/d(D) H:i', time()); $log = $date." ". $log; //標準出力に出力(コンソール画面とか、ブラウザからログが見える)。 echo $log . "<br>"; //文字化けする場合はソースファイルの文字コードを変えるか、ここで適切に変換しましょう //echo mb_convert_encoding($log . "<br>", "SJIS", "UTF-8"); //ログファイルへ出力(追記モードです。ログサイズを監視する処理を入れておいたほうが無難です。) $fp = fopen("./tweet_test.log", "a+");//環境によってパスの書き方は変わります。 fputs($fp, $log. "\n"); fclose($fp); } ?>
上記コードの動作にはOAuth.phpとtwitteroauth.phpが必要です。
abraham / twitteroauthから入手し、tweet_test.phpと同じディレクトリに格納しておきます。
動作ログの例
2013/01/21(Mon) 20:47 main() : start 2013/01/21(Mon) 20:47 TwitterPost() : start 2013/01/21(Mon) 20:47 TwitterPost() : success end 2013/01/21(Mon) 20:47 main() : end
3. スクリプトを定期的に起動する
あとは、PHPスクリプトを定期的に起動すればbotの完成です。
Linuxではcronが一般的です。
レンタルサーバの場合はcronの設定画面が用意されていることが多いのでそちらを利用します。
また、crontabコマンドが使える場合、crontab -eコマンドでviが起動するので設定を書き込む方法もあります。
Windowsではタスクスケジューラを使用します。
コントロール パネル->システムとセキュリティ->管理ツール->タスクスケジューラ から新規タスクを作成します。
トリガはおこのみで毎時設定など。
タスクから、php ~.php 等と書いたbatファイルを定期的に起動するように仕掛けておけばOKです。
以上、定期的につぶやくbotの作成法でした。
ピンバック:エンジニアインターン ドットインストールを用いてtwitterのbotを作ろう! | IT系就活のためのインターンシップ・新卒採用求人情報なら「エンジニアインターン」
ピンバック:ドットインストールを用いてtwitterのbotを作ろう! | IT系就活のための新卒採用求人ならエンジニア就活