昨日のIoTLTで話をしたネタの中に出てきたAPIを使うときに使ったコード紹介です。
ちなみにNode.jsのバージョンは6.3.1です。
pokemon-go-node-api
調べたら色々とあったのでどれを使うかはお任せなのですが、僕が使ったライブラリは近くでポケモンが出たら何かする
みたいなことがやりやすかったので紹介します。
使ってみる
インストール
npm install pokemon-go-node-api
ほぼサンプルコードですが以下で動きます。
GoogleアカウントでPokemon Goを始めた場合はusername
とpassword
にそれぞれGoogleアカウントのメアドとパスをいれます。
ありがちなのが(というか僕がそうでした)、そもそもPokemon GoのアカウントをGoogleアカウントで使ったのかどうか忘れてることですね苦笑 がんばって思い出してください笑
'use strict';
const PokemonGO = require('pokemon-go-node-api');
// using var so you can login with multiple users
let a = new PokemonGO.Pokeio();
//Set environment variables or replace placeholder text
let location = {
type: 'name',
name: 'Tokyo/Taito-ku' //東京都台東区
};
let username = '登録したGoogleアカウントのメールアドレス';
let password = '登録したGoogleアカウントのパスワード';
let provider = 'google';
a.init(username, password, location, provider, (err) => {
if (err) throw err;
console.log('1[i] Current location: ' + a.playerInfo.locationName);
console.log('1[i] lat/long/alt: : ' + a.playerInfo.latitude + ' ' + a.playerInfo.longitude + ' ' + a.playerInfo.altitude);
a.GetProfile((err, profile) => {
if (err) throw err;
console.log('1[i] Username: ' + profile.username);
console.log('1[i] Poke Storage: ' + profile.poke_storage);
console.log('1[i] Item Storage: ' + profile.item_storage);
let poke = 0;
if (profile.currency[0].amount) {
poke = profile.currency[0].amount;
}
console.log('1[i] Pokecoin: ' + poke);
console.log('1[i] Stardust: ' + profile.currency[1].amount);
setInterval(() => {
a.Heartbeat((err,hb)=>{
if(err) {
console.log(err);
}
let texts = '';
for (var i = hb.cells.length - 1; i >= 0; i--) {
if(hb.cells[i].NearbyPokemon[0]) {
//console.log(a.pokemonlist[0])
let pokemon = a.pokemonlist[parseInt(hb.cells[i].NearbyPokemon[0].PokedexNumber)-1];
console.log('1[+] There is a ' + pokemon.name + ' near.');
//この辺にWebhookとか噛ませればSlack通知とかも余裕ですね。
}
}
});
}, 5000);
});
});
実行するとこんな感じ
Pinsir
というのはカイロスのことなんですけど、カイロスが近くに出たことがわかります。
簡単ですね!
日本語っぽく
日本語でやりたいですよね。
- 位置情報の指定
let location = {
type: 'name',
name: 'Tokyo/Taito-ku' //東京都台東区
};
の箇所でやってます。Tokyo/Taito-ku
と書いている部分はGoogleMapのAPIに投げているみたいなのでそれっぽい書き方をすればだいたいうまくいきます。
1[i] Current location: 東京都台東区東上野2-17-8 共同ビル3F //dotstudio住所
1[i] lat/long/alt: : 35.70951 139.7767348 0
- ポケモンの名前
ポケモンの名前が英語だとよくわからんので日本語化しようとしたら案の定日本語化jsonを公開している人がいたのでありがたく使わせてもらいます。
こんな感じで結構実用的(?)になりました
補足
まだWIP状態だからサンプルをチェックしろって書いてるけど、サンプルだとpoke.io.js
を読み込んでますね
var PokemonGO = require('./poke.io.js');
なので現時点ではpoke.io.jsの中から挙動を確認すると良さそうです。
##まとめ
このプログラムを拡張していけばSlack通知だったりアプリ通知だったり色々と拡張できますね。
トリガーを作れてあとはアイディア次第なので色々とつなげてみたいと思います。