いよいよおまちかねのTwitterAPIです。やっぱりそこに人がいると面白いしやる気が持続します。
■今回のお題
指定ユーザのツイッター数を取得しグラフ化します。
■PHPコード
[root@wiki-web-2 externalscripts]# cat tweetcount.php #!/usr/bin/php <?php // OAuthライブラリの読み込み require "/usr/lib/zabbix/alertscripts/alert-tweet/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //認証情報4つ $consumerKey = "XXXXXXXXXX"; $consumerSecret = "XXXXXXXXXX"; $accessToken = "XXXXXXXXXX"; $accessTokenSecret = "XXXXXXXXXX"; //接続 $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); //変数定義 $id = $argv[1]; $LastMin1 = 60; $tweetcount = 0 ; //タイムライン取得 $tweets_obj = $connection->get("statuses/user_timeline", array( "screen_name" => $id , "count" => "200", "include_rts" => "true", )); //echo "------------------------------------\n\n"; //var_dump($tweets_obj); //繰り返し開始 for ($i = 0; $i < count( $tweets_obj ); $i++) { //echo $tweets_obj[$i]->created_at . "\n"; //ツイート日時 $date1 = $tweets_obj[$i]->created_at; $tweettime1 = date('Y-m-d H:i:s', strtotime($date1)); //echo $tweettime1 . " ツイート時間"; //echo "\n"; //現在時間 $date2 = time() ; $nowtime = date( 'Y-m-d H:i:s' , $date2 ) ; //echo $nowtime . " 現在時間" ; //echo "\n"; //時間差分算出 $datetime1 = date_create( $tweettime1 ); $datetime2 = date_create( $nowtime ); $interval = $datetime1->diff($datetime2); //差分算出 $diffday1 = $interval->format('%Y-%m-%d') ; //echo $diffday1 . " 日にち差" . "\n" ; $difftime1 = $interval->format('%H') ; //echo $difftime1 . " 時間差 Hour" . "\n" ; $difftime2 = $interval->format('%i') ; //echo $difftime2 . " 時間差 Minint" . "\n" ; //一定時間内ならツイートを表示 if( $diffday1 == "00-0-0" and $difftime1 == "00" and $difftime2 < $LastMin1 ) { //echo "No " . $i . "\n" ; //echo "ツイート時間:" . $tweettime1 . "\n" ; //echo $tweets_obj[$i]->text . "\n" ; //echo "----------\n"; ++$tweetcount ; } else { //echo " 該当ツイート無し " ; } } //echo "時間内のツイート数 " . $tweetcount . "\n" ; echo $tweetcount ;
■注意など
・TwitterOAuthライブラリを使います
・60分に1回取得するようにZABBIXで設定するので、60分以内のツイートの件数を算出します。
・自分がフォロワーである必要ななく誰のタイムラインでもとってこれますが
鍵付きユーザはどうなるか試してません。
・1回に取得できるツイートは200件までです。
→60分以内に200回以上ツイートするユーザをグラフ化したかったら
30分、15分に1回など間隔を狭める必要アリ。
・リツート件数も含めたいので「 ”include_rts” => “true”, 」 を書き足す。
・ライブラリの場所はフルパスで書く。
「require “/usr/lib/zabbix/alertscripts/alert-tweet/autoload.php”; 」
・ユーザIDは引数で指定
■■■■設定方法■■■■
■■1
ツイッターのDeveloperページでアプリを登録する
参考 Twitter APIの使い方まとめ
https://syncer.jp/twitter-api-matome
ケータイ電話の登録がうざくて、090-xxxx-xxxxだったら
90-xxxx-xxxxみたいに頭の0をとる。
連続して送ると1日空ける必要あり。アプリを登録して認証キーを4つ控えておく。
■■3
ライブラリを仕込む。
個人的な都合で、/usr/lib/zabbix/alertscripts に。前回の記事参照。
■■3
スクリプトの場所は個人的な都合で/usr/lib/zabbix/externalscripts内に。
Twitter APIのPHPプログラムはネットにもたくさん載ってるので今回もパクり参考にさせてもらった。
■■4
PHPファイルの権限を修正する。
chown -R zabbix:zabbix *.php
chmod 755 *.php
■■5
試しに実施してみる。60分以内のツイート件数が合ってることを確認。
[root@wiki-web-2 externalscripts]# php tweetcount.php mo_mo_tarou2001 0[root@wiki-web-2 externalscripts]#
■■6
ここからはZABBIX上で。Virtual Machineでホスト登録をする
■■7
アイテム登録をする
ユーザIDは引数で指定。
■■8
グラフを登録する
これでグラフまでOK。
—————————
若い声優さん1000人登録して、勢い監視もできちゃう!ZABBIX、なんてすごいツールなんだお
ちなみにBOTだとだいたい一定時間に決まった数ツイートをするため監視してもあまりおもしろくないです。今回はグラフ化するところまで。
この続きについては、トリガー登録して、ツイートが一定期間なければ「この人死んでるかも」とツイートする人間死活監視を設定する予定。
■余談
スクリプトがうまく動かない時は、単体でphpファイルを動かしてみたり、agentログを確認しよう。
[root@wiki-web-2 externalscripts]# cd /var/log/zabbix/ [root@wiki-web-2 zabbix]# ll -rw-rw-r-- 1 zabbix zabbix 19529 5月 29 22:07 2016 zabbix_agentd.log -rw-rw-r-- 1 zabbix zabbix 4853321 5月 29 22:57 2016 zabbix_server.log
One thought on “PHPでも勉強するか! その6 ZABBIXでツイート数をグラフ化する”