LoudTwitterに変わるもの

LoudTwitterの存続が怪しいので、自前で用意してみた。

9/4追記:復活しましたね。一安心。絶賛ドネーション受付中です。でもtwtr2srcに移行しました。まだβですが全く問題ありません。類似サービスとして、t2bとか、専用サイトまで用意してくれるTwilogなどもあります。

仕様や注意点

取得結果をメール送信するので、自分宛に送ってもいいし、はてダに送ってもいい。
手抜き仕様として、200件しか取得しません。一日200件以上発言する人はページング処理など追加する必要があります。
抽出範囲は前日分(0:00〜23:59)となります。前日分なので、cron回すときは日付が変わってからにしてください。
Twitterの認証はBasicです。oAuthは面倒です。
メール送信はmb_send_mailを素で使っているので、mailコマンドでメール送信できる環境が必要かも。
メールの書式はLoudTwitterに似せてありますが、各発言へのリンクは張っていませんのであしからず。
未確認事項として、エンコーディングUTF-8を指定していますが、これは環境依存かもしれません。文字化けするようならEUC-JPやShift_JISなんかも試してみて下さい。でも半角カナは化けます。
PHPだけど、PHPcliから実行することを想定しています。アカウント情報も埋め込みなので、Webから使うのはやめた方がいいと思います。

環境

私は自前のUbuntu鯖で動かしました。

導入

My Twitter

まずは、My Twitterというphpクラスを入手する。
これは、TwitterAPIをラップしたもの。
http://www.phpclasses.org/browse/package/4075.html
ただし、このスクリプトはPOSTメソッドで取得しようとするので、このままでは動きません。
myTimeLineParse関数内の、CURLOPT_POST指定部分をコメントアウトします。

//              curl_setopt($ch, CURLOPT_POST, true);
cUrl

このスクリプトcURLを使うので、「php5-curl」パッケージをインストール。

cli

cronで回すので、cliインタプリタ用パッケージ「php5-cli」をインストール。

今回のスクリプト

で、今回作ったスクリプトはこれ。

<?php
$username = 'xxxxxxxx';
$password = 'xxxxxxxx';
$send_to = "xxxxxxxx@d.hatena.ne.jp";
$from = "xxxxxxxx@xxxxx.xx.jp";

require_once('./my_twitter.php');
$twitter = new MyTwitter($username, $password);
$archive = $twitter->userTimeline(200);
$tcount = count($archive);
if ($tcount > 0)
{
        $body = '';
        $today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
        $yesterday = $today - 86400;
        for ($i = 0; $i < $tcount; $i++)
        {
                $tm = strtotime($archive[$i]['created_at']);
                if ($tm >= $yesterday and $tm < $today)
                {
                        $sts = date('H:i ', $tm) . $archive[$i]['text'] . "\n";
                        $body = $body . $sts;
                }
        }
        mb_language("japanese");
        mb_internal_encoding("UTF-8");
        $subj = date('Y/m/d分', $yesterday);
        mb_send_mail($send_to, $subj, $body, "From:".$from);
}
?>

protectedじゃない人の発言取るときは認証要らないんだけど、面倒なのでそのまま。
冒頭の4行を書き換えれば使えると思います。(通常Fromヘッダは不要ですね。)
あと、my_twitter.phpのインポート先は、php.iniでパスを通してあるところ(例:/usr/share/php:/usr/share/pear)に配置するか、フルパスで指定するかしてあげればよいかと。cronから実行するときは相対パスだとうまくいかないみたい。


あとは、my_twitter.phpと上記スクリプトを適当なフォルダに配置して、cronで回します。