Hatena::ブログ(Diary)

ものおき@はてな

2009-10-05

Twitterbotを作る時に便利なリソースとかまとめてみた(2010/5/28更新)

| 22:46 | Twitterbotを作る時に便利なリソースとかまとめてみた(2010/5/28更新)を含むブックマーク

関連エントリ

キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち - ものおき@はてな

キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのに - ものおき@はてな

キャラクタ系TwitterBotを作る時に気をつけたい事つらつらと - ものおき@はてな

2本ほど(ものすごくラフな)初心者向けのPHPによるbot作成エントリなんぞ書いていて、おかげさまで参考にして頂いてるようなのですが。

あれから時間もたって、ソースを丸ごと公開してる方が既にいらっしゃるので、ご紹介したりするついでに、便利げなリソースをまとめてみたりしました。自分用メモでもあるので随時更新。

基本編

3種類のbotソースコードを公開してらっしゃいます

プログラミングができなくても作れるTwitter botの作り方

手前味噌。時間帯を判別して定期postするbotができます

キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち - ものおき@はてな

応用編

特定語句へのリプライ、正規表現による抽出、好感度設定などなど。

8bitnote: Twitterbotの特定の単語に反応してリプライ反応するサンプルスクリプト ver.2

8bitnote: 正規表現講座 - POST内容から発言を引用するには

8bitnote: 好感度を持つTwitterbotサンプルスクリプト

Service_Twitter(日本語版)関連

Services_Twitter

配布先と簡単なマニュアル。以下のメソッドだけでも使い方を把握しておくといいですよ。

  • getFriendsTimeline($options = false)
    • FriendsTimelineを取得。オプションで特定ユーザーのTLの取得もできます。詳しくはライブラリのソースを読んでみて下さい。
  • 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本家版)関連

PEAR::Services_Twitter

配布先とマニュアル(英語)。

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関連

PHP本家マニュアル

botで良く使うのは配列とテキスト関連の関数。基本の構文も抑えておくと吉。日本語なので安心です。

PHP: PHP マニュアル - Manual

PHPでエラーが出ているようだったら、エラーメッセージでぐぐっちゃうのが実は一番の近道だったりします。

PHPの主要なエラーメッセージの一覧はここ。

PHP: パーサトークンの一覧 - Manual

「syntax error」が出ている時は構文ミスです。「on line〜」の形でどの辺がおかしいか教えてくれてるのでしっかり見ましょう。

よくあるパターンは行末セミコロンの付け忘れ、ifやfor、foreachのカッコがちゃんと閉じられていない、配列のカンマが変な所にある、など。

また、さくらなど一部のサーバではエラーメッセージの出力を抑制している場合があります。そういう時はbotのソースの最初の方に以下のコードを足してあげると全てのエラーを出力してくれるようになります。詳しくはPHPマニュアルを見て下さい。

<?php
error_reporting(E_ALL);
?>

正規表現関連

botの反応語句を「原稿」など単語で設定するのは推奨しません。特にTLを単語で抽出すると、フォロー数によってはAPIが足りなくなりますし、言葉狩りbotと取られかねませんので、「原稿+しないと」など、フレーズで抽出をかけるようにした方がいいと思います。いきなり組み込むのではなく、チェッカーをしっかり活用して下さい。

正規表現サンプル集

サンプル豊富。分かりやすく、参考になります。

PHP正規表現チェッカー

PHP正規表現チェッカー。

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 Wiki(英語)

本家API wiki

dev@twitter(英語)

本家デペロッパー向けサイト。Twitter APIを使ってごにょごにょする人むけの情報がたくさん。英語だけど。

ここからアプリ登録を行うとOAuthのテスト用Access Tokenが自動でとれます。bot作るだけなら自力でなんとかしなくてもいいんです。素晴らしい。

Twitter API 仕様書 (勝手に日本語訳シリーズ) -観測気球

TwitterAPI仕様書の日本語訳。随時更新されてます。

OAuth

OAuth core 1.0

OAuthのドキュメント。

PHPでTwitter APIのOAuthを使う方法まとめ - 頭ん中

PEAR::HTTP_OAuthを使ってOAuthアクセストークンを取得するまでの詳細な解説。

session_start()がコケる場合はPEAR::HTTP_Session2を使えばなんとかなります。

ガイドライン(2010/5/28追加)

Twitterヘルプ

Twitter本体の利用規約・ルール・ガイドラインなどはこちらでチェックを。

二次bot作る人向けにはこの辺が該当すると思います。

-Twitterヘルプ: パロディやコメンタリー(解説)、ファンアカウントに関するポリシー

あと、ごくごく個人的には、責任の所在を明確にするって意味で、bio欄にはbot製作者の名前を書いておくべきだと思います。