Skip to content

Instantly share code, notes, and snippets.

@yoshimov
Last active February 25, 2017 06:19
Show Gist options
  • Save yoshimov/a760e5bf5cd39ffab415 to your computer and use it in GitHub Desktop.
Save yoshimov/a760e5bf5cd39ffab415 to your computer and use it in GitHub Desktop.
IngressのCOMMログを監視してハングアウトに通知するボット

概要

用途がだいぶニッチですが、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

と送れば、現在の監視対象の一覧が返ってきます。 キーワードはハングアウト毎に違うセットを指定できます。

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment