スキーとネットとロードバイクと旅。

群馬で自由人からリーマンになった恋する男の趣味に生きるブログ。

フォローしている人の「桐生」という文言が入ったツイートをリツイートするbotを作りました。

桐生市bot http://twitter.com/bot_kiryu

twitterapiを利用。Oauth認証後、タイムラインから直近200件のツイートを取得。ツイートに「桐生」というキーワードが入っているかどうかを判定し、入っていればapi経由でリツイートするというbotです。これをcronで一定時間ごとに叩いてあげればok。

Oauth認証はgithubにあったabrahamさんのライブラリを使用。「twitteroauth」とググれば出てくるので、そのtwitteroauthフォルダの2ファイルをダウンロードしておきます。config.phpにOauth認証に必要な4つのパラメータを定義しておいて、読み込んでます。このあたりはドットインストールの「ツイッターbotを作る」を参考にしました。

ドットインストール http://dotinstall.com/

本当は、Streaming APIを使って、自分のタイムラインからではなく、ツイッター全体を対象にしたかったのですが、ボリューム的に無理なのと、そもそも全ツイートの取得はgoogleなどの一部の企業にしか提供されていないらしく、まあ無理ですね。とはいえ、予めキーワードで指定してあげればかなり絞れるはずなのですが、いまいちstreamingAPIの使い方がわからんので、とりあえずREST APIのみで作れる形で仕上げました。

上述の通り、自分のアカウントのTLしか見ていないので、とにかくフォローしまくらないといけないのがめんどくさい。フォローを代行してくれるシステムとか無いのかな。

次はこれをベースに、streaming apiを使ってもっと広い範囲のツイートを対象にできるようにしてみたいと思います。

<?php

require_once("twitteroauth/twitteroauth.php");
require_once("config.php");

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$params= array("count"=>200);

$result = $conn -> get("statuses/home_timeline",$params);

foreach($result as $value){
	$text=$value->text;
	if(strstr($text,"桐生")){
		$id=$value->id;
		$retweet = $conn -> post("statuses/retweet/".$id);
	}
}
?>