2011/1/16

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

(2012-10-5)
売り上げランキング: 14,705
100円