PHPでTwitterボットを作ってみた
ちょっと、一部から要請があったので、Twitterボットを作ってみました。こちらの記事を参考にしたら、割と簡単に出来ました。
twitterのbotなどで OAuthを使う方法(PHPバージョン2) | 星光のつれづれ日記
今回はHTMLで制作されたページから要素を抽出して、Twitterにポストする、というのと、メンションされた時に、それをRTして返信する、という2つの動作を作りました。
require_once('twitteroauth/twitteroauth.php'); include('simple_html_dom.php'); $user = 'ボット名'; $consumer_key = 'Consumer Key'; $consumer_secret = 'Consumer Secret'; $access_token = 'Access Token'; $access_token_secret = 'Access Token Secret'; $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); // 定期ポスト $html = mb_convert_encoding(file_get_contents('HTMLの取得元URL'),'UTF-8', 'SJIS'); $data = str_get_html($html); foreach($data->find('dt') as $element){ $post = $element->plaintext; $post = array($post); if (empty($tweets)) { $tweets = $post; } else { $tweets = array_merge($tweets,$post); } } srand(time()); $rand_key = array_rand($tweets,1); $post = $tweets[$rand_key]; $content = $to->OAuthRequest('https://api.twitter.com/statuses/update.xml','POST',array('status' => $post)); echo $content; // mentionされた時のポスト $number = fopen('number.txt', 'r'); $currentnumber = fgets($number); fclose($number); $since_id = "since_id=".$currentnumber; $result = $to->OAuthRequest('http://api.twitter.com/statuses/mentions.xml?'.$since_id,'GET',array('count'=>'30')); $xml = simplexml_load_string($result); foreach( $xml->status as $value ){ $status_number = $value->id; $text = $value->text; $screen_name = $value->user->screen_name; if($screen_name == $user || preg_match('/(R|Q)T( |:)/',$text)){continue;} $content = $to->OAuthRequest('https://api.twitter.com/statuses/update.xml', 'POST',array('status' => 'メッセージ RT @'. $screen_name.': '.$text)); echo $content; } $number = fopen('./number.txt', 'w'); $status = fwrite($number, $status_number); fclose($number);
foreachで回すのでポストが重複しないような処理は必須ですね。ポストの抽出にはPHP Simple HTML DOM Parserを使いました。
何を作ったかは当分ないしょですw。

加藤 康祐 / 企画・設計
プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。
是非、フォローしてください!
Twitter / Instagram
売り上げランキング: 14,705
100円
フリーランスとして働き始めるってどういうことだったのか?フリーランスとして働くってどういうことなのか?フリーランスが目指すことってなんなのか?5年間の自分の経験から書きました。(2010年執筆)