指定した場所にポケモンが現れたらSlackに通知させる
ポケモンGOが異常な人気なようで。ただ常時アプリを起動しているのはバッテリー的に厳しいので、近くにポケモンが現れたら通知してくれるサービス無いかなと思っていたらナイスなタイミングでQiitaにこんな記事がアップされてました。
オフィス周辺にポケモンが現れたら Slack チャンネルに通知するようにした – Qiita
おーこれ良いじゃん!と思って早速試そうと思ったらすでにpokego-scanのパッケージが消えてた。。。
CLOSED PROJECT DISCLAIMER
I’m closing this project, since PokeVision has kept asking me to do so. I built it for fun, and since they are against people using their internal API this way, I don’t feel comfortable making it publicly available anymore. Apologies to everyone using it.
I’m not sure about the proper etiquette for deleting active projects from GitHub, so I’m leaving this readme to let everyone using it know.
via:dgoguerra/pokego-scan: Scan pokemon through PokeVision’s API
何か他に同じようなもの無いかなと思って色々と探してみたところ、考えている人はたくさんいるようで結構ありました。その中でも導入が簡単そうな以下の方法を試してみました。
Get Pokemon Go notifications by using Slack
事前に決めておいた場所(自宅とか学校とか会社とか)にポケモンが現れたらSlackに通知してくれるようです。しかも同種のサービスとは違いdockerfileを用意してくれているので、Docker上で動作できる模様。これは便利そう!!ってことで早速試してみます。
導入方法
Dockerイメージの作成と起動
まずはGitHubにあるリポジトリをローカルにクローンします。
cd projects
git clone git@https://github.com/rubenmak/PokemonGo-SlackBot.git
クローンしたDockerfileを使って、DockerイメージをBuildします。
$ docker build -t pokemongo/pokemongo ./
Sending build context to Docker daemon 24.57 MB
Step 1 : FROM python:2.7
---> b5c7fb15c9cb
Step 2 : ENV PROJECT_HOME /opt/PokemonGo-SlackBot
---> Using cache
---> 4827194948a5
Step 3 : ADD . $PROJECT_HOME
---> Using cache
---> 44dd8de93d77
Step 4 : WORKDIR $PROJECT_HOME
---> Using cache
---> 02ad3a0916e4
Step 5 : RUN pip install -r requirements.txt
---> Using cache
---> a441f0fe2ede
Step 6 : EXPOSE 5000
---> Using cache
---> 3d91a902276f
Successfully built 3d91a902276f
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pokemongo/pokemongo latest 3d91a902276f 21 minutes ago 763.4 MB
コンテナを起動します。
docker run -dit --name pokemon-slack pokemongo
ポケモントレーナークラブのアカウントを準備する
Googleアカウントかポケモントレーナークラブのアカウントが必要になるので、どちらかを準備しておきます。私は新規でポケモントレーナークラブを作成して使うことにします。
Slack APIのIncoming Webhooksを準備する
結果をSlackに上げるために、Slack APIのIncoming Webhooksを準備します。
Slackにログインして、左にあるメニューから「Apps & integrations」をクリック。
検索フォームに「webhook」と入力し、検索結果から「Incoming Webhooks」を選択。
「ADD configration」をクリック。
投稿させたいチャンネル名を選択。
Webhook URLが表示されるのでメモしておきます。
ポケモンを探したい場所の緯度と経度を入手する。
Google Mapを使って緯度と経度を調べます。場所を決めてから赤いピンを「右クリック」 → 「この場所について」をクリック。
緯度と経度が分かりました。
さっそく動かしてみる
以上で準備が出来ましたので、さっそく動作するか試してみましょう。まずは、コンテナにログインします。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3820269680d 3d91a902276f "python2" 43 minutes ago Up 43 minutes 5000/tcp pokemon-slack
$ docker exec -it pokemon-slack bash
root@f3820269680d:/opt/PokemonGo-SlackBot#
無事にログインできました。ここで以下のコマンドを実行します。
$ python pokeslack.py -u [ユーザ名] -p [パスワード] -l "[緯度] [経度]" -st 1 -r 1000 -sw [Webhook URL]
場所を上野公園にして、中心から半径250m内に現れるポケモンを通知してみます。
$ python pokeslack.py -u [ユーザ名] -p [パスワード] -l "35.715285 139.773285" -st 1 -r [ポケモンを探したい距離(メートル)] -sw https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx
わんさか出てきました。リンクをクリックすると地図が表示されます。
ポケモンの名前を日本語表示にする
デフォルトだとポケモンの名前が英語表示なのですが、起動時に「-L ja」オプションを加えると日本語表示になります。
$ python pokeslack.py -u [ユーザ名] -p [パスワード] -l "35.715285 139.773285" -st 1 -r [ポケモンを探したい距離(メートル)] -sw https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx -L ja
無事に日本語表記になりました!
ポケモンのアイコン表示
ポケモンのアイコンを表示させることもできるようです。
Templarian/slack-emoji-pokemon: Slack Pokemon Emojis
事前準備
まずはvimインストール。
$ apt-get install vim
nvmをインストール。
$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.18.0/install.sh | bash
$ echo "source ~/.nvm/nvm.sh" >> ~/.profile
$ source ~/.nvm/nvm.sh
nodeのバージョンは0.11以上が必要なので、バージョンを指定してインストールします。
$ nvm install 0.11
emojipacksをインストール。
$npm install -g emojipacks
$ which node
/root/.nvm/v0.11.16/bin/node
emojipacksの設定変更。
vim /usr/local/bin/emojipacks
一番上の行を以下に変更。
#!/root/.nvm/v0.11.16/bin/node --harmony
emojipacks実行。いくつか聞かれるので以下のように入力。
$ emojipacks
Slack subdomain: [Slackのチームドメイン]
Email address login: [ユーザーのメアド]
Password: [パスワード]
Path or URL of Emoji yaml file: https://raw.githubusercontent.com/templarian/slack-emoji-pokemon/master/pokemon-prefix.yaml
「-pi ’:pokemon-’」オプションを付けて実行します。日本語表記だとうまく動かないので日本語表記オプションは外しています。
$ python pokeslack.py -u [ユーザ名] -p [パスワード] -l "35.715285 139.773285" -st 1 -r [ポケモンを探したい距離(メートル)] -sw https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx -pi ':pokemon-'