【追記】
「ポケモンGO」の生みの親、解析ツールPokeVisionを規約違反と明言 - iPhone Mania とのことなので、使用する場合は規約違反となる可能性があることを認識しておいてください。
使用によって生じた損害について、投稿者は一切責任を負いません。
【追記2】
http://www.i4u.com/2016/08/114046/niantic-breaks-pokemon-go-apis-and-all-bots-and-trackers-based-apis とのことなので、
このツールを使用しても、情報を取得することはできません。
Pokémon GOの運用についてのアップデート とのことなので、
このツールの利用は推奨されるものでもありません。
興味本位でインストールしてみました。
基本的には https://www.jonaharagon.com/PoGoMapWiki/#!installation.md に従って進めます。
今回は Ubuntu 環境にインストールしてみます。
ダウンロード
git clone します。
$ git clone https://github.com/AHAAAAAAA/PokemonGo-Map.git
インストール
aptitude
$ sudo apt-get install python python-pip nodejs npm python-dev
あとに pip でインストールする python パッケージにコンパイルが必要なものもあるため、python-dev も入れておきます。
pip
次に必要な python パッケージをインストールします。
$ cd PokemonGo-Map $ sudo pip -r requirements.txt
手元の環境では six というパッケージの Version Conflict が発生しました。
pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python2.7/dist-packages), Requirement.parse('six>=1.9'))
そのため、今回は手動でそれを upgrade しました。
$ sudo pip install six --upgrade
node
続いて node パッケージをインストールします。
$ npm install
手元の環境では node がないというエラーが発生しました。
sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
README を見たところ、どうやら Ubuntu では実行バイナリが node ではなく nodejs という名前になっていることが原因のようで、これは nodejs-legacy というパッケージで解決できるようです。
$ sudo apt-get install nodejs-legacy
起動
いよいよサーバの起動です。
$ python runserver.py -u ${PTC_USERNAME} -p ${PTC_PASSWORD} -st 10 -k ${GOOGLE_MAPS_API_KEY} -l "${LATITUDE} ${LONGITUDE}"
オプションについては以下のとおりです。
- -u PTC_USERNAME / -p PTC_PASSWORD はそれぞれ ポケモントレーナークラブ | Pokemon.com で作成、登録したものになります。(-a google を追加すると google のアカウントを使えるようです。)
- -st は探索ステップ数を指定するものです。これが大きいほど、より遠くまで探索します。
- -k GOOGLE_MAPS_API_KEY も Google Maps Platform | Google Developers から取得します。
- -l は地図の中心座標を指定するものです。Google Map で適当な場所をクリックするとポップアップするラベルに書いてあります。
起動に成功すると、以下のようなメッセージが流れます。
2016-07-31 15:23:41,852 [ runserver] [ INFO] Parsed location is: XX.XXXX/XX.XXXX/XX.XXXX (lat/lng/alt) 2016-07-31 15:23:41,853 [ search] [ INFO] Search loop 0 starting 2016-07-31 15:23:41,854 [ search] [ INFO] Attempting login to Pokemon Go. 2016-07-31 15:23:41,855 [ auth_ptc] [ INFO] PTC login for: XXXXXXXXXXXXXXXX 2016-07-31 15:23:43,628 [ auth_ptc] [ INFO] PTC Login successful 2016-07-31 15:23:44,139 [ search] [ INFO] Login to Pokemon Go successful. 2016-07-31 15:23:44,555 [ models] [ INFO] Upserted 0 pokemon, 0 pokestops, and 0 gyms
一番下の Upserted... が定期的にデータを取得する時のログです。(デフォルトは 5sec 間隔のようです。)
この状態で http://localhost:5000/ にアクセスすると、以下のような画面になります。
ちなみに高負荷でレスポンスが取得できない場合は以下のようなログが出ます。
2016-07-31 15:46:44,029 [ search] [ ERROR] Search thread failed. Response dictionary key error 2016-07-31 15:46:44,029 [ search] [ ERROR] Niantic servers under heavy load. Waiting before trying again
また、ログインサーバで失敗する場合は以下のようなログが出ます。
2016-07-31 15:57:52,975 [ pgoapi] [ ERROR] Login failed - unexpected server response! 2016-07-31 15:57:52,975 [ search] [ INFO] Failed to login to Pokemon Go. Trying again in 5 seconds.
日本語化
これでも十分に便利なのですが、ポケモンの名前が英語なので、これを日本語にします。
言語リソースは /static/locales にあります。
ここに日本語リソースを置きます。
日本語リソースは別の方が作られているのを拝借します。
違うリポジトリですが、フォーマットは同じなので使えます。
$ cd static/locales $ wget https://raw.githubusercontent.com/ttymsd/PokemonGo-SlackBot/738bc3a98c1c140e22e4c55b2393297538868b84/locales/pokemon.ja.json
置いたら再起動します。するとポケモンの名前が日本語表記になります。
おわりに
ちなみに自分はこういうのを使うとゲームが作業になってしまうため、使わないようにしてます。