用途がだいぶニッチですが、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 wget
sudo pip3 install hangups
COMMログを取得したい範囲をIntelマップで開いて、 URLをコピーしておきます。
次に、PhantomJSでCOMMログを取得するJavaScriptを置きます。
mkdir ~/comm
cd ~/comm
wget 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
と送れば、現在の監視対象の一覧が返ってきます。 キーワードはハングアウト毎に違うセットを指定できます。