用途がだいぶニッチですが、IngressのCOMMログをIntelから収集して、特定のメッセージをHangoutsに通知するBotの作り方です。
Webサイトを監視するBotという意味では、一応色々応用は効くんじゃないでしょうか。
2015/6/26にIntelの仕様が変更されたので、以下の方法は動作しなくなりました。ご注意ください。
Intelを機械的に監視するので、Ingressのアカウントを止められる危険があります。
また、動作中はIntel Mapが使えなくなることがあります。かといって、他のアカウントを使うとエージェントプロトコルに違反する可能性があります。
- Ubuntu 14.10
- Ingress Intel (2015.2)
- PhantomJS 1.9.0
- HangoutsBot (2015.2)
- Python 3
まずは必要なアプリをインストールします。
sudo aptitude install python3 python3-pip phantomjs git wgetsudo pip3 install hangups
COMMログを取得したい範囲をIntelマップで開いて、URLをコピーしておきます。
次に、PhantomJSでCOMMログを取得するJavaScriptを置きます。
mkdir ~/commcd ~/commwget https://gist.githubusercontent.com/yoshimov/069dcb0aa8eaa0b4ced6/raw/a357cc623aa2e2ed174d30707186f1d03d710735/ingress-comm.js
同じディレクトリにsettings.jsというファイルを作って、以下の様な内容を記述します。areaには上記IntelマップのURLを指定します。
var l='gmail address'var p='password'var area='https://www.ingress.com/intel?ll=xx&z=xx'
ログの収集を開始します。常に動かす場合はデーモン化したほうが良いと思いますが、2段階認証を使っている場合は起動時にパスワードが必要なので、デーモン化は難しそうです。
phantomjs ingress-comm.js | tee -a ingress-comm.log
ここではログファイルを1つにしていますが、時刻情報には日付が含まれていないので必要に応じてcronなどで1日毎にローテートしたほうが良いです。
次にBotを作りますが、まずはBot用のGoogleアカウントを用意しておきます。作成したアカウントでログインして、実際にハングアウトが使えるかどうかを確認しておきます。
HangoutsBotを取得します。常駐処理起動に対応している必要があるので、パッチを当てたものを利用してください。
git clone https://github.com/yoshimov/HangoutsBot.git
IngressBotコマンドをインストールします。
wget -O Core/Commands/IngressBot.py https://gist.githubusercontent.com/yoshimov/97f3999449c371539906/raw/b062cfef279927ccbb40a61c5945a039af7c0021/IngressBot.py
このファイルの最初の方にあるingress_logのパス名を、上記の収集中のログファイルに変更します。
config.jsonファイルとして以下の内容を記載します。YOUR-USER-ID-HEREの部分は、Google+のプロフィールのURLとして表示される数字のID部分を入力します。
{ "admins": ["YOUR-USER-ID-HERE"], "autoreplies_enabled": true, "autoreplies": [ [["bot", "robot", "Yo"], "/think {}"] ], "development_mode": false, "commands_admin": ["hangouts", "reload", "quit", "restart", "config", "restart", "block", "watch", "watchlist", "unwatch"], "commands_enabled": true, "forwarding_enabled": false, "rename_watching_enabled": true, "conversations": { "CONV-ID-HERE": { } }}
Botを起動して、Botとして動かすアカウントのメールアドレスとパスワードを入力します。
python3 Main.py
あとはBotアカウントを入れたグループハングアウトを作成して、管理者が
/watch キーワード
と送れば監視対象キーワードの追加、
/unwatch キーワード
と送れば監視対象キーワードの削除、
/watchlist
と送れば、現在の監視対象の一覧が返ってきます。キーワードはハングアウト毎に違うセットを指定できます。