twitter PHP bot

自マシンの話ではないんですが、twitterbotを作った。前々からやりたいとは思っててアカウント作ってたんだけど、どーも定時POSTのやりかたがよくわかんない+レンタルサーバじゃ無理なのかな〜と思っててほったらかしだったのん。で、えるものひとががんばっていたのに触発されていろいろ調べてみた。
定時実行っていうとまっさきに思いつくのがcronなんだけども*1、さすがにレンタルじゃどうもならんなー、RSSの定期巡回的なイメージ?とか思ってたんだけど、PHPで仮想的にcronが実現できるスクリプトがあった。
cronが使えないサーバでcronを使うPHPスクリプト : pseudo-cron:phpspot開発日誌

  • まずはtwitterにPOSTするスクリプトを作る。このへんとか参考に。ttp://kuroutan.blog.shinobi.jp/
    • わたしはロリポサーバなのですが、file_get_contents()がなんかうまく動かなくてPHP5にしてみたりセーフモード解除したりしてみたんだけどダメで、マニュアル見て第2引数を false → FILE_USE_INCLUDE_PATH に変えたらうまく動いた。なんでかは追求してない、仕事じゃないので動けばいいよ。
  • pseudo-cronをダウンロードする。
    • cron実行をメールで受け取りたいときは、pseudo-cron.inc.php の $sendLogToEmail にアドレス
    • ディレクトリ構成
・cron - pseudo-cron-image.php
      - pseudo-cron.inc.php
      - (POSTするスクリプト).inc.php
      - cronjobs - crontab.txt
                 - (POSTするスクリプト).inc.php
#comments start with '#'
#mi  h    d    m    dow      job                       comment
30   *    *    *    *      cronjobs/(POSTするスクリプト).inc.php  # 毎時30分にtweet
    • POSTするスクリプトがどっちにおいていいかよくわかんないwので両方おいてるw動けばい(ry(おわっとるな
  • どっかWebページにタグを仕込んでアクセス<img src="(サーバ)/cron/pseudo-cron-image.php"> でアクセスすると、xxx.jobというファイルが作られてタスク実行、みたいな感じ。

で、2、3日あれこれ設定変えて試してるんだけど、7-23とか、夜中は送らない設定にすると次の日うまくいかないような、やっぱり毎日imgタグのあるページにアクセスしなきゃなのかはまだよくわかんない。今2時間おきのPOSTにしてると動いてる。

タスク

  • もうちょっと発言の種類を増やす。ファイル読み込みにするとか。
  • 謎の「Wed, 03 Jun 2009 09:00:09 +09000003Asia/Tokyo 20096 f00Wed, 03 Jun 2009 09:00:09 +0900Asia/Tokyo 09302009Wed, 03 Jun 2009 09:00:09 +090006!!」というPOSTがたまに出現するのでなおすw
  • 別のbotの特定の発言にリプライとかしたい。

*1:webcronは去年有料化されていたので断念