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だけど、PHPのcliから実行することを想定しています。アカウント情報も埋め込みなので、Webから使うのはやめた方がいいと思います。
環境
私は自前のUbuntu鯖で動かしました。
導入
My Twitter
まずは、My Twitterというphpクラスを入手する。
これは、TwitterのAPIをラップしたもの。
http://www.phpclasses.org/browse/package/4075.html
ただし、このスクリプトはPOSTメソッドで取得しようとするので、このままでは動きません。
myTimeLineParse関数内の、CURLOPT_POST指定部分をコメントアウトします。
// curl_setopt($ch, CURLOPT_POST, true);
今回のスクリプト
で、今回作ったスクリプトはこれ。
<?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から実行するときは相対パスだとうまくいかないみたい。