スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

twitterボットを作る 3.スケジュールを組む①

何個か前の記事でtwitterのAPI1.1を利用して自動的につぶやいたりリツイートしたりするプログラムを作りました。
この記事の通り作ればブラウザでphp(my_twitter_app.php)を開けばボットが動き出します。
でも、ボットの本質は人が呼んだ時に動き出すということではなく、スケジュール化されていたり、なにかをトリガーにして自分で動く事(例えば「寒いなー」というつぶやきがあればそのつぶやきにかぶせて今日の気温を教えてあげる、など)です。

ここから2回に分けてボットの自動化方法について解説したいと思います。
1回目のこの記事では超簡単な(お粗末な?)方法をご教示します。

■目的


・twitterボットに自動的につぶやかせる

■準備


・twitter API1.1を利用したphpプログラム 参考
・phpが動くサーバ 参考
・ウェブブラウザ(ChromeまたはFirefox推奨)とPC/Mac

■開始方法


今回のシンプルな方法は「ブラウザをリロードしてphpファイルを繰り返し呼ぶ」という方法です。
ChromeやFirefoxには拡張機能がインストールできます。
その中には指定時間で自動的にリロードするという機能の拡張機能もあります。
例えばChromeであればChromeReloadなんかがオススメです。
ChromeにChromeReloaderをインストールした状態でmy_twitter_app.phpを開き、ChromeReloaderで1分毎にページをリロードすれば1分毎に動くボットの完成です。
my_twitter_app.phpで、例えば「メリークリスマス」を検索してそれをリツイートする、というプログラムを組んでいれば1分毎に最新の「メリークリスマス」に対してリツイートするボットになります。ただし、twitterのAPI1.1を悪用すると(悪用しているとtwitterに判断されると)アカウントが凍結されるのでご注意下さい。参考

<?php
//メリークリスマスをリツイートするボット
require_once('twitteroauth.php');

//xxxxxxxxxxxxxxxxの部分に4つのキーを入力
$consumerKey = "xxxxxxxxxxxxxxxx";
$consumerSecret = "xxxxxxxxxxxxxxxx";
$accessToken = "xxxxxxxxxxxxxxxx";
$accessTokenSecret = "xxxxxxxxxxxxxxxx";
 
$twObj = new TwitterOAuth(
    $consumerKey,
    $consumerSecret,
    $accessToken,
    $accessTokenSecret
);

//1. twitterのつぶやきから指定の文字列を検索する
$key = "メリークリスマス"; //検索ワード
$options = array('q'=>$key,'count'=>'1','lang'=>'ja');//countの値を変えることで検索結果の取得数を決める。ここでは1としているので1つしか結果を返さない。
$url = 'https://api.twitter.com/1.1/search/tweets.json?exclude_replies=true';
$json = $twObj->OAuthRequest($url,'GET',$options);

//検索結果から情報を抜き出します
$jset = json_decode($json, true);
foreach ($jset['statuses'] as $result){
    $id = $result['id_str']; //*******************************下の方で使います
    $name = $result['in_reply_to_screen_name'];
    $uri = "http://twitter.com/".$name;
    $link = $result['user']['profile_image_url'];
    $content = $result['text'];
    $updated = $result['created_at'];
}
print '<html><head><meta charset="utf-8">';//文字化け防止
print $content;

//つぶやきをリツイートする
$url ="https://api.twitter.com/1.1/statuses/retweet/".$id.".json";
$res = $twObj->OAuthRequest($url,"POST",array());

if ($res!= 200) {
    //Do something if the request was unsuccessful
    //echo 'There was an error posting the message.';
}
?>




え?ということはPCをずっと起動してなきゃいけないの?
と疑問に思われた方もいるかと思います。今回の方法はあまり一般的ではない力技です。
次回はサーバとcromを利用する、もう少しスマートな方法をご紹介します。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。