Header Ads

ライブカメラbot

ですヽ(◎´∀`)ノ  ライブカメラのbot作ってみました〜 よかったらフォローしてみてくださいね。

ライブカメラ1  ライブカメラ2  ライブカメラ3 ライブカメラ4  ライブカメラ5  ライブカメラ6






ライブカメラ画像って見るの楽しいんですが、いちいちウェブサイトに見に行かないといけないので、 ライブカメラ画像が自動的にTLに流れてくれば楽しいなーって思ったんです。




自動ツイートといえば、アカウント作って設定するだけで自分のツイッターアカウントからbotみたいにつぶやけるサービスがありますが、今回必要なのはライブ画像を取得してきてその画像付きでツイートをするbotです。調べてみるとAPIを使って簡単に作れるみたいなんで作ってみました。それぞれのbotは30分に1回ツイートしますが、ツイートする時間をずらしてあるので全部フォローすると5分おきにライブカメラ画像がTLに流れてきま〜す。

作り方の手順

1.  bot用アカウントを取得し、トークンなどを取得

 フリーのメールアドレスを使ってtwitterアカウントとトークン等を取得します。まずはbot用のツイッターアカウントで、https://dev.twitter.com/ にアクセスし、右上のSign inをクリックします。




アカウント情報を入れてサインインします。




右上のアイコンから、My applicationsをクリックします。




Create a new application ボタンをクリックします。




アプリケーションの情報を入力します。適当でokです。




チェックボックスにチェックを入れ、画像の文字列を入力して Create your Twitter application のボタンをクリックします。




アプリケーションが作成されました。





Settingsタブをクリックして、設定画面に移ります。





Application Typeを Read only から



Read and Write に変更します。






Update this Twitter application's settings をクリックして変更を反映させます。





アプリケーションの設定が反映されました。





Detailsタブをクリックします。



Create my access tokenのボタンをクリックします。




アクセストークンが作成されます。






できたアクセストークンを確認します。次からのステップで必要になるのは、
Consumer key、Consumer secret、Access token、Access token secretの4つです。これらは他人に知られないようにしましょう。





2. サーバにbotを仕込む

 遊んでいるVPSがあったのでこれを使うことにしました。

tmhOAuth

まずは認証用のtmhOAuthを以下から入手してサーバに入れておきます。
https://github.com/themattharris/tmhOAuth
 

 

画像付きツイート用phpスクリプト 

Twitter APIを使ってツイートするphpスクリプトを作ります。使用するAPIは 
POST statuses/update_with_media です。
https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media

tweet.php
 
<?php

        require 'どこかのディレクトリ/tmhOAuth.php';
        require 'どこかのディレクトリ/tmhUtilities.php';
    
$tmhOAuth = new tmhOAuth(array(
    'consumer_key' => 'あいうえお',
    'consumer_secret' => 'あいうえお',
    'user_token' => 'あいうえお',
    'user_secret' => 'あいうえお',
    ));

$image = 'どこかのディレクトリ/shot_hl.jpg';
$status = 'ライブ画像を撮っておいたぞ #DQ10LiveCam';
$code = $tmhOAuth->request(
    'POST',
    'https://upload.twitter.com/1.1/statuses/update_with_media.json',
     array(
            'media[]'  => "@{$image}",
            'status'   => $status,
            ),
     true, // use auth
     true  // multipart
     );

?>


画像取得、ツイート、画像削除用シェルスクリプト

ライブ画像を取得して上記のスクリプトを実行して画像を消すシェルスクリプトを作ります。phpスクリプトに全部入れ込むこともできると思いますが、こっちの方がシンプルなので分けました。http://livecamera.dqx.jp/shot_hl.jpg がライブ画像のURLです。

bot.sh

#!/bin/sh
wget http://livecamera.dqx.jp/shot_hl.jpg -P どこかのディレクトリ
sleep 5
php どこかのディレクトリ/tweet.php
sleep 10
rm どこかのディレクトリ/shot_hl.jpg
exit


cronで定期実行

最後にcronを設定して、30分ごとに上記のスクリプトを実行させます。

#crontab -e
*/30 * * * * どこかのディレクトリ/bot.sh
 
# /etc/crond restart



3. botを全部で6こ作る

ひとつのTwitterアカウントからAPIを使ってツイートしまくると凍結される恐れがあるようなので、ひとつのbotは30分に1回つぶやくようにし、botを6こつくって、つぶやく時間を5分ずつずらしてみることにします。

0,30  * * * * どこかのディレクトリ/bot1.sh
5,35  * * * * どこかのディレクトリ/bot2.sh
10,40 * * * * どこかのディレクトリ/bot3.sh
15,45 * * * * どこかのディレクトリ/bot4.sh
20,50 * * * * どこかのディレクトリ/bot5.sh
25,55 * * * * どこかのディレクトリ/bot6.sh     

 

 

4. テキストがランダムに変わるようにしてみる

botのつぶやきのテキストがいつも同じでは面白くないので、いくつかのbotはツイートとテキストがランダムに変わるようにしてみます。

$status = 'ツイートテキスト'; 

の部分を以下に置き換えます。

$msg = array(
          "ツイートテキスト1",
          "ツイートテキスト2",
          "ツイートテキスト3",
          "ツイートテキスト4",
          );
$max = count($msg);
$number = mt_rand(1,$max)-1;
$status = $msg[$number];



さて、いかがだったでしょうか? 素人がbot作ってみたわけですが問題なく動いているようです。みなさんもぜひbot作りに挑戦してみてください。面白いのができたら教えてね〜☆



おまけ



0 件のコメント:

Powered by Blogger.