Home > スポンサー広告 > 【完全無料】Google App EngineによるcronとPHPでTwitter botを作る

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Comments: -

Comment Form
Only inform the site author.

Trackback+Pingback: -

TrackBack URL for this entry
http://chuan1kou3.blog27.fc2.com/tb.php/115-a3e208d8
Listed below are links to weblogs that reference
スポンサーサイト from 蟄居屏息

Home > スポンサー広告 > 【完全無料】Google App EngineによるcronとPHPでTwitter botを作る

Home > Twitter > 【完全無料】Google App EngineによるcronとPHPでTwitter botを作る

【完全無料】Google App EngineによるcronとPHPでTwitter botを作る

  • Posted by: チャンコ
  • 2011-03-24 Thu 22:56:34
  • Twitter
数学問題ボットや算数問題ボット、そしてチャンコボットを運用する際に使用していた
Twitter bot generatorが3月の頭あたりにサスペンドを受けるという事態が多発していた。
『サブアカウントはこちら!』みたいなしょーもない宣伝とか
『TwittererWiki編集してちょ!』なんて果てしなくどうでもいい定期ポストを吐くだけのために使う奴、
そしてアフィリエイトリンク貼るためだけに使う奴が多かったせいだろう。
さらにタイムラインリプライが有料で課金しなければ実装できないなど、
情弱から金を奪う構図が嫌だった。

ちょうどよい機会であったので、チャンコが所有しているボットたちを自前のPHPで実装してみることにした。
当エントリは、作業が滞った部分を苦難の助手のために記録したものである。
実に簡単なのでみんなもやってみてね☆というエントリ。
(ちょうどよい機会とはあくまでTwitter bot generatorのサスペンドの話であって、地震で就活がことごとく白紙になったことを指すものではない。実際この序文を書き始めたのは3月6日のことだし。)

↓↓↓↓クリックしてください!↓↓↓↓

東大生ブログランキング

↑↑↑↑クリックありがとです!↑↑↑↑


主に参考にしたページはこの2つ。
1)プログラミングができなくても作れるTwitter botの作り方
2)TwitterBOTを作る手順メモ


IMG_0002.jpg
@コンセプト図


Twitterで動くbot作成に必要なのは
・botのプログラムが書き込まれたPHPファイルと、それを設置するサーバー
・自動ツイートのためのcron実行
・botを組み込むTwitterアカウント
上図のようにサーバーにPHPファイルをアップロードし、
そのファイルをcronで定期的に叩くことによってTwitterにつぶやきを流すのである。


1.PHPファイルを作る
@pha氏によるWEBページ1)から最新バージョンのEasybotterをダウンロード。
(2011年3月現在は2.05が最新だった)
1)を見ながらbotのプログラムを組んでいく。
【注意】各種ファイルは文字コードの選択ができるテキストエディタで書き上げていくこと。UTF-8で書くこと。
完成したら、サーバーにFFFTPなどファイル転送ソフトを利用してアップロード。
【注意】このときPHPが利用出来るようなサーバでなければならない。
チャンコの場合は@pagesを使用してるのです。


2.PHPファイルとTwitterとの連携を設定
Easybotter内のファイルsetting.phpに
botのアカウント名とOauth認証のための4つのキーを書く。
そのためにまずはOauth認証アプリを作っておかなければならないのだが、簡単に作れるのです。
このリンクhttps://dev.twitter.com/appsから。


Oauth1.png
@新しいアプリケーションを追加をクリック。


Oauth2.png
@指示に従って記入。とくにbot作成の際には『アプリケーション名』と『アプリケーションのウェブサイトURL』が重要。
アプリケーション種類はクライアント。アクセスタイプは読み書きでおk。


Oauth3.png
@記入後、図の矢印に書いてあるところに4つのキーが出現。これを打ち込む。


【注意】チャンコはこの4つのキー入力のせいで長時間足止めを食らった。要注意なのだ。



3.手動でbotを動かす
4つのキーを入力してEasybotter内の全てのファイルをレンタルサーバにアップロードしたら
cron設定する前に1回手動で動かしてみる。
ここで変なエラーメッセージがでなければ次へ進むべしっ
エラーメッセージが出たら、その文言を丸々ググってみればだいたい解決する。
チャンコが経験したのはこんなエラーメッセージだ!
[Oauth認証関連]
object(SimpleXMLElement)#10 (2) {
["request"]=>
string(20) "/statuses/update.xml"

["error"]=>
string(19) "Incorrect signature"
}
・setting.phpで先程の4つのキーがきちんと打ち込まれていない。
・文字コードUTF-8で設定できてない

[サーバータイム不具合]
@pagesはサーバー時間が多々ずれてるので、その場合は運営にメールすること。
チャンコのサーバーでは1時間もずれていた。まあ無料なので文句は言わない。
確かメールしたら数営業日で応対してくれた。無料なので(ry

[その他PHPファイルの異常]
/public_html/~~.php on line 【エラー発生の行数】
・指示されたファイルのエラー発生行を見て何とかする。


他にももっとエラーを経験したはずなんだけど思い出せたら更新する。


4.cron設定
いよいよ冒頭で紹介したWEBサイト2)に移りcronの設定を行う。
Google App Engineは完全無料というわけではなく、
ある一定量リソースを使用したら金銭を支払わないとサービスを利用できなくなるという制度になっている。
現在チャンコボットは1分ごとに叩く設定にしている(最大に利用している)が何の問題もない!
2)に手順が書かれているのでここでは割愛させて頂くが
Pythonを後に入れた場合にGAELauncherを起動するとエラーみたいなのが出てしまった。
Edit→PreferencesでPythonファイルを指定してやればおkである。


5.進化するボット
・タイムラインのあるワードに反応して@を投げる機能や、投げられた@に対して@を返す機能を確率で制御する。
・時刻を設定して、その条件にあった時のみつぶやきを行うボットを作成する。
・つぶやく時点での年月日や時刻をつぶやき内容に織り込む
といったテクニカルなボットを作成しよう。

bot.phpファイル内の文言を改良していく。
//1)よるほー
if(date("G") == 0 && date("i") == 0){
$response = $eb->postRandom("yoruho.txt");
}
//2)30分ごとに通常つぶやき
if(date("i") % 30 == 0){
$response = $eb->postRandom("data.txt");
}
//3)確率5/7で@返信
if(rand(0,6) <= 4){
$response = $eb->reply(1,"reply.txt","reply_pattern.php");
}
//4)確率5/7でタイムラインリプライ
if(rand(0,6) <= 4){
$response = $eb->replyTimeline(1,"timeline_reply.php");
}

1)date("G")やdate("i")がそれぞれ時・分を表す。
時が0かつ分が0の時のみデータyoruho.txtを使用する、という内容である。

2)date("i")すなわち分を30で割った余りが0に一致するときにdata.txtを使用する、という内容である。
分を30で割った余りが0に一致するときとはすなわち0分、30分のこと。

3)4)rand()は乱数を発生させる。(0,6)で0~6の数から1つ数を生み出す。
この数が4以下だったときに@リプライを返すという内容である。
@のキャッチボールが何回も続くのはなかなかの確率に。

次に@pha氏のWEBにも掲載されているテクニカルなつぶやきのための置換ワードが以下のようになっている。
{year} => 現在の年(西暦、4桁)
{month} => 現在の月(1~12)
{day} => 現在の日(1~31)
{hour} => 現在の時(0~23)
{minute} => 現在の分(0~59)
{second} => 現在の秒(0~59)

{follower_id} =>自分をフォローしてる人の中からランダムな一人のID
{follower_name} => 自分をフォローしてる人の中からランダムな一人の名前
{following_id} =>自分がフォローしている人の中からランダムな一人のID
{following_name} => 自分がフォローしている人の中からランダムな一人の名前
{timeline_id} =>自分がフォローしてる人で最近発言した人の中からランダムな一人のID
{timeline_name} => 自分がフォローしてる人で最近発言した人の中からランダムな一人の名前

# 「ID」とはhttp://twitter.com/○○○○○○の部分)
# 「名前」とはサイドバーに「名前」「Name」として表示されているもの)

#ここから下はpost_random.php, post_rotationを使う場合
{id} =>自分のfollowerの中からランダムな一人のID
{name} => 自分のfollowerの中からランダムな一人の名前

#ここから下はreply_random.phpを使う場合(reply_pattern.phpに書いても機能します)
{id} => 話しかけられた相手のID
{name} => 話しかけられた相手の名前
{tweet} => 話しかけられた発言内容
これをdata.txtやreply_pattarn.phpに織り込めばTwitter bot generatorなんかでは実装できないレベルのボットを作成できることまちがいなしなのである!
さらに、いまのところ『天下り的に』@pha氏に書いてもらった状態であるeasybotter.phpの内部を読み込んでいけばPHP言語に対するより一層の理解につながることまちがいなしであるー。
将来的にはしゅうまいくんライクな形態素解析のできるボットつくってみたいのう。

↓↓↓↓クリックしてください!↓↓↓↓

東大生ブログランキング

↑↑↑↑クリックありがとです!↑↑↑↑


スポンサーサイト

Comments: 0

Comment Form
Only inform the site author.

Trackback+Pingback: 0

TrackBack URL for this entry
http://chuan1kou3.blog27.fc2.com/tb.php/115-a3e208d8
Listed below are links to weblogs that reference
【完全無料】Google App EngineによるcronとPHPでTwitter botを作る from 蟄居屏息

Home > Twitter > 【完全無料】Google App EngineによるcronとPHPでTwitter botを作る

タグクラウド
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR

Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。