2009-10-05
Twitterbotを作る時に便利なリソースとかまとめてみた(2010/5/28更新)
Twitter | |
関連エントリ
キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち - ものおき@はてな
キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのに - ものおき@はてな
キャラクタ系TwitterBotを作る時に気をつけたい事つらつらと - ものおき@はてな
2本ほど(ものすごくラフな)初心者向けのPHPによるbot作成エントリなんぞ書いていて、おかげさまで参考にして頂いてるようなのですが。
あれから時間もたって、ソースを丸ごと公開してる方が既にいらっしゃるので、ご紹介したりするついでに、便利げなリソースをまとめてみたりしました。自分用メモでもあるので随時更新。
基本編
プログラミングができなくても作れるTwitter botの作り方
キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち - ものおき@はてな
応用編
特定語句へのリプライ、正規表現による抽出、好感度設定などなど。
8bitnote: Twitterbotの特定の単語に反応してリプライ反応するサンプルスクリプト ver.2
8bitnote: 正規表現講座 - POST内容から発言を引用するには
8bitnote: 好感度を持つTwitterbotサンプルスクリプト
Service_Twitter(日本語版)関連
配布先と簡単なマニュアル。以下のメソッドだけでも使い方を把握しておくといいですよ。
- getFriendsTimeline($options = false)
- getReplies()
- リプライ(2009/10/06現在の仕様ではRTも含みます)を取得
- setUpdate($value)
- ステータスをアップデートします
- addFriend($id)
- $idで指定されたユーザーをFollowします
- removeFriend($id)
- $idで指定されたユーザーをRemoveします
※2009/10/20追記ここから
- getUserTimeline()
- 特定ユーザーのTLを取得します。ただし、followしている相手じゃないと失敗するみたいです。
- 使い方はこんなかんじ。
<?php $options = array('id'=>'取得したいユーザのID'); $st->getUserTimeline($options); ?>
※2010/5/28追記
この日本語版Servies_Twitterですが、Basic認証を用いているため、2010年8月いっぱいで動作しなくなります。(参考:Twitter、W杯の影響でAPIのベーシック認証廃止を延期 - CNET Japan)
現在xAuth/oAuth 対応型を開発中のようですが、一足先にOAuth対応版を公開している方もいらっしゃるので、こちらにひとまず移行しておくのもアリだと思います。
KARMA君のお部屋別室(2部屋目)〜傍観者たち〜 - 傍観ぶろぐ : Services_Twitter をOAuthに対応させてみた(暫定)。 by KARMA
Service_Twitter(PEAR本家版)関連
配布先とマニュアル(英語)。
OAuth認証で利用する場合はHTTP_OAuthに依存します。HTTP_OAuthはHTTP_Request2 に、HTTP_Request2はNet_URL2にそれぞれ依存するので、使用する場合は必ず依存ライブラリのインストールを。
また、これらのライブラリは全てPHP5対応になります。
それと、ちゃんと見てないですが、依存ライブラリのどれかがcURLを利用していたはず…?
PEAR本家版のメソッド一例
<?php //インスタンスを生成(OAuth認証) try { $twitter = new Services_Twitter(); $oauth = new HTTP_OAuth_Consumer('consumer_key', 'consumer_secret', 'auth_token', 'token_secret'); $twitter->setOAuth($oauth); } catch (Services_Twitter_Exception $e) { echo $e->getMessage(); } //Twitterに投稿 try { $twitter->statuses->update(array('status'=>'postする内容')); }catch (Services_Twitter_Exception $e) { echo $e->getMessage(); } //home_timelineを取得 try { $twitter->statuses->home_timeline(); }catch (Services_Twitter_Exception $e) { echo $e->getMessage(); } ?>
APIメソッドとオプションの一覧はdata/api.xmlで定義されてます。取得系メソッドの返値は指定しなければ配列で返ってくるので、あとはそれをぶんまわしてお好きに、って感じで。
あと、こんな記事があったので、確認してみるといいかも。
Services_Twitter0.5.0を使ってみてつまづいたところ « ウップス!!なかわけ
PHP関連
botで良く使うのは配列とテキスト関連の関数。基本の構文も抑えておくと吉。日本語なので安心です。
PHPでエラーが出ているようだったら、エラーメッセージでぐぐっちゃうのが実は一番の近道だったりします。
「syntax error」が出ている時は構文ミスです。「on line〜」の形でどの辺がおかしいか教えてくれてるのでしっかり見ましょう。
よくあるパターンは行末セミコロンの付け忘れ、ifやfor、foreachのカッコがちゃんと閉じられていない、配列のカンマが変な所にある、など。
また、さくらなど一部のサーバではエラーメッセージの出力を抑制している場合があります。そういう時はbotのソースの最初の方に以下のコードを足してあげると全てのエラーを出力してくれるようになります。詳しくはPHPのマニュアルを見て下さい。
<?php error_reporting(E_ALL); ?>
正規表現関連
botの反応語句を「原稿」など単語で設定するのは推奨しません。特にTLを単語で抽出すると、フォロー数によってはAPIが足りなくなりますし、言葉狩りbotと取られかねませんので、「原稿+しないと」など、フレーズで抽出をかけるようにした方がいいと思います。いきなり組み込むのではなく、チェッカーをしっかり活用して下さい。
サンプル豊富。分かりやすく、参考になります。
POSIX正規表現関数(ereg()など)を使っている場合はそのまま、PCRE関数(preg_match()など)を使っている場合は「Perl互換の正規表現 (preg)」にチェックをいれて使います。便利。
cron関連
cronjob.orgの詳細な使い方
cron タスクの設定 【 Cron-job.org の利用】 | ≡ Drupal Japan ≡
さくらインターネットのcron設定方法
さくらインターネットのCRON設定を可能な限り簡単に解説したい
xareaでのcron設定方法
CRONジョブの設定についておしえてください - XREA&CORE SUPPORT BOARD
さくらインターネットはスタンダードプラン以上、xareaは有料版でcronが利用できます。どちらも月額は500円くらい。もっと安くてcron利用可能な有料サーバーも探せばありますが、メジャーなのはこの二社くらいかなあ…。cronjob.orgのドイツ語が不安でちょっとならお金だしていいかなって人や、もともとこちらのサービスを使ってる方にはおすすめ。私は元々ユーザーな事もあって、さくらインターネットにお世話になってます。
TwitterAPI
本家デペロッパー向けサイト。Twitter APIを使ってごにょごにょする人むけの情報がたくさん。英語だけど。
ここからアプリ登録を行うとOAuthのテスト用Access Tokenが自動でとれます。bot作るだけなら自力でなんとかしなくてもいいんです。素晴らしい。
Twitter API 仕様書 (勝手に日本語訳シリーズ) -観測気球
TwitterAPI仕様書の日本語訳。随時更新されてます。
OAuth
OAuthのドキュメント。
PHPでTwitter APIのOAuthを使う方法まとめ - 頭ん中
PEAR::HTTP_OAuthを使ってOAuthのアクセストークンを取得するまでの詳細な解説。
session_start()がコケる場合はPEAR::HTTP_Session2を使えばなんとかなります。
ガイドライン(2010/5/28追加)
Twitter本体の利用規約・ルール・ガイドラインなどはこちらでチェックを。
二次bot作る人向けにはこの辺が該当すると思います。
-Twitterヘルプ: パロディやコメンタリー(解説)、ファンアカウントに関するポリシー
あと、ごくごく個人的には、責任の所在を明確にするって意味で、bio欄にはbot製作者の名前を書いておくべきだと思います。