7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

twitter botを作ってみる(第2回〜応用編-メッセージのランダマイズ)

Last updated at Posted at 2014-01-10

CSVに定義したメッセージをランダムに投稿させる

前回作成したスクリプトは、固定のメッセージを一つ出力するのみでした。
これを改良し、複数のメッセージをランダムに出力するようにしたいと思います。

1.CSVを読み込むクラスを作成する

下記のような感じ。ここでは「lib」ディレクトリに配置しています。

s mkdir lib
s cd lib
s sudo vim CSVReader.php 

s sudo cat CSVReader.php 
<?php

class CSVReader{

    /**
     * CSVファイルを読み込む
     */
    public function read($csv){

        // CSVを読み込む
        $data = file_get_contents($csv);

        // 一時ファイルに書き込み
        $tmp  = tmpfile();
        $csv  = array();
 
        fwrite($tmp, $data);
        rewind($tmp);

        // CSVを読み込む
        while (($data = fgetcsv($tmp, 0, ',')) !== FALSE) {
            $csv[] = $data;
        }

        fclose($tmp);
 
        return $csv;
    }

}

2.前回作成した投稿スクリプトを拡張し、CSVのメッセージを投稿するようにする

下記の2点を追加

  • 1で作成したCSVReaderクラスを読み込むように修正
  • 読み込んだCSVから、メッセージをランダム(mt_rand(min, max))に出力するよう修正

例えば下記のようになります。

s sudo cat TweetBot.php 
<?php

    require_once(dirname(__FILE__).'/twitteroauth/twitteroauth/twitteroauth.php');
    require_once(dirname(__FILE__).'/lib/CSVReader.php');

    // developer info
    $consumerKey       = ‘XXXXXXXXXXXXXXX’;
    $consumerSecret    = 'XXXXXXXXXXXXXXX';
    $accessToken       = 'XXXXXXXXXXXXXXX';
    $accessTokenSecret = 'XXXXXXXXXXXXXXX';

    $oAuth = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);

    // oAuth認証を利用し、twitterに投稿する
    $TWITTER_STATUS_UPDATE_URL = "http://api.twitter.com/1.1/statuses/update.json";
    $method  = 'POST';
    $message = getMessage();

    var_dump($message);

    $response = $oAuth->post('statuses/update', array('status' => $message));

    // 結果出力
    var_dump($response);

    /**
     * 投稿メッセージを取得する
     */
    function getMessage(){

        $reader = new CSVReader();

        $csv = './lib/csv/test.csv';

        $csv = $reader->read($csv);

        $i = mt_rand(1, 4);

        return (isset($csv[$i][1])) ? $csv[$i][1] : '';
    }

?>

3.実行

s php TweetTest.php
s php TweetTest.php

スクリーンショット 2014-01-09 17.26.47.png

うまくいったようです。
5分でできますねw

twitter botを作ってみる(第1回〜twitteroauth導入編)
twitter botを作ってみる(第2回〜応用編-メッセージのランダマイズ)
twitter botを作ってみる(第3回〜作成したスクリプトを自動実行する)

7
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?