2010/07/24

TwitterBOT制作日記その2 ~API側の一時的制限~

現在作成中のBOTは、二人のキャラが1つのbotで同居したようなものを考えています。
会話をさせたりさせなかったりする予定。
(本来、それぞれのキャラでアカウント作って、リプライを飛ばしあうのが正道かと思われますが、それができない事情があるのです)

というわけで、キャラA,Bどちらが喋っているのかを明示的にするために、しゃべる都度アイコンを入れ替えるという処理をしようと思いまして、それを実装に励んでいるわけですが。
どんだけやっても、プロフィール画像変更処理がうまくいかない。
画像はアップされている挙動だが、Twitter上では「×」と表示される。

なんだ元画像が壊れてる? いやいや普通に見えるし、パスが間違ってる? いや間違ってたらPHPエラーだし、MIMEタイプのミス? いやミスっても正常でもダメだなぁ…
と悩んでいたところ。

どうも、TwitterAPI側がAPIでのプロフィール変更処理を一時的にストップしている模様で。
http://status.twitter.jp/
なるほどそりゃできんわな、と脱力した次第であります。

一方で思ったことは。
最近高負荷でクジラもよく出現するTwitterですので、こういったAPIの制限を仕掛けてくるということも今後少なくないかもしれません。
(サーバをデータセンターに移してどうとかいう話もありますが、サーバをいくら増強しても限界には限界があるわけで)
こういった事象がおこりうることを考慮した上でBOT制作するべきなのかな…とか、考えてしまいました。

----
以下、つぶやきというかちょっとした思いですが。
最近負荷を考慮してない気軽なBOTが多いのかなーとか思ったりしつつ。
EasyBotterならPHP知らなくても、TL反応も自動フォロー返しも簡単に実装できてしまいます。(それだけ簡略化したものを提供してくださる作者様に感謝感謝ではあります。なにぶん私もPHPは初心者)
TL反応といえば、自TLを取得するAPIを叩いているわけですし、自動フォロー返しはおそらく(ソースを読み解いたわけじゃないのでウソかもですが)、フレンドリストとフォロワーリストの差分をとって不足をフォローするといった処理をしているのではと思います。ここでもAPI二回叩いている。
cronを2分でやっていれば、2分毎にこの処理が走るわけです。空振ったとしてもAPIが叩かれるのには変わりはありません。

自動フォロー返しは2分間隔で行う必要があるのでしょうか。
TL反応は意見が分かれそうですが、2分単位にストーキングしなくてもいいのではないかなーと思います。

このあたりの実装をもう少し考慮すれば(例えば自動フォロー返しは一日一回にする、とか)、その分Twitterのサーバには優しくなるのかなと思ったりしています。

大量のキャラBOTが2分間隔でこれらのAPIを叩きに行ったらそりゃ負荷も増えるわな、落ちるわなとか思っちゃうわけです。
なので、少しでもTwitterのサーバに優しい設計が出来ればいいのかなぁとか考えております。
(もちろんcronで回すサーバもPHP稼働サーバも負荷は考えるべきなのだけれども)

一番いいのは作らないことじゃね? というツッコミはなしで…うん、それはよく分かってるのでorz

2010/07/20

TwitterBOT制作日記その1

BOTを作るべく、カスタマイズしやすそうな「EasyBotter」を借りてみることに。
http://pha22.net/twitterbot/

実績あるサーバもWikiのほうに載ってますが、まず手持ちのものでできないか確認してみました。
結果、NGだったサーバの備忘録w


■ぷらら
ホームページ持っておりCGIスペースも持ってます。
公式には乗ってませんでしたがどうやらPHPが動くみたい。(.phpファイルが動いた)

ただし、PHPのバージョンが4.X.Xだった(詳細失念)ため、EasyBotter2は動きません。
1.4を試しに置いたけどNGでした(なんか動かない)

まぁ非公式だしいっかと。

■000webhost.com
こちらもホームページとして借りています。また、PHP5対応とのことでwktkしながら動かしてみました。
結果NG。
↓と同一の現象が発生してしまいました。
http://www26.atwiki.jp/easybotter_wiki/pages/21.html#id_aa5eb401

また、000webhost.comでは対応していない関数をPEARで使用しております。(具体的には「ini_set()」)
こいつを外せばうごくんじゃね? と楽観視してもダメでした。

というわけで上記2サーバは諦め、実績あるサーバでレンタルして動かしてみることにします。
@PAGESさんがレンタルできたので、そちらでやってみます。

きょうはここまで…