世界中でポケモンGO旋風が起こっています。
日本版のポケモンGOがリリースされたら即電話が掛かってくるスクリプトをお昼休みに書いてみました。
これで最速ポケモンゲットだぜ( ・ㅂ・)و
アーキテクチャ
HTTP通信でitunesのページをポーリングしてステータス取得
+
Twilio で電話
PokémonGO の現状調査
Nianticのポケモン公式HPを7月15日確認したところ、iOS版は未公開、Android版は既に公開されています。Android版はソフトウェア側でフィルタされており日本ユーザはプレイ出来ないみたいです。
itunesのページがオープンしたら検知
appstore.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
def app_store_is_open(_id):
"""
日本のAppストアがオープンしていればTrue
:param _id: str
:rtype: bool
"""
headers = {'Content-type': 'application/json; charset=utf-8'}
url_base = "https://itunes.apple.com/jp/app/apple-store/{}?ct=official&mt=8"
url = url_base.format(_id)
response = requests.get(url, headers=headers)
assert response.status_code == 200 # HTTP Statusが200であること
return "カスタマーレビュ" in response.text # オープンしているアプリはカスターマーレビュー項目が存在
ids = {
"POKEMON GO": "id1094591345",
"白猫": "id895687962",
"パズドラ": "id493470467",
"グラブル": "id852882903",
}
for k, v in ids.items():
print("{}: {}".format(k, app_store_is_open(v)))
実行結果
$ python appstore.py
グラブル: True
POKEMON GO: False
パズドラ: True
白猫: True
Twilioで電話掛ける
日本ではAUと手を組んで展開している電話関連ベンチャーのTwilioAPIを利用して電話を発信します。
tel.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from twilio.rest import TwilioRestClient
ACCOUNT_SID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
AUTH_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
FROM_CALL_NUMBER = "819012341234"
TO_CALL_NUMBER = "819012341234"
client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN)
call = client.calls.create(to=TO_CALL_NUMBER, from_=FROM_CALL_NUMBER,
url="http://foo.com/call.xml")
print call.sid
実行結果
$ python tel.py
CA8b5ea1f08503ee8efc6aXXXXXXXX
完成品
2つのスクリプトを合体させて、ポケモンGOのAppStore版がリリースされたら電話が掛かってくるスクリプトを完成させます。
poke_check.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
from twilio.rest import TwilioRestClient
def app_store_is_open(_id):
"""
日本のAppストアがオープンしていればTrue
:param _id: str
:rtype: bool
"""
headers = {'Content-type': 'application/json; charset=utf-8'}
url_base = "https://itunes.apple.com/jp/app/apple-store/{}?ct=official&mt=8"
url = url_base.format(_id)
response = requests.get(url, headers=headers)
assert response.status_code == 200 # HTTP Statusが200であること
return "カスタマーレビュ" in response.text
def tel():
ACCOUNT_SID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
AUTH_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
FROM_CALL_NUMBER = "819012341234"
TO_CALL_NUMBER = "819012341234"
client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN)
call = client.calls.create(to=TO_CALL_NUMBER, from_=FROM_CALL_NUMBER,
url="http://foo.com/call.xml")
def start():
print("start")
pokemon_go = "id1094591345"
if app_store_is_open(pokemon_go):
print("OPEN")
tel()
else:
print("NOT OPEN")
if __name__ == '__main__':
start()
実行結果
$ python poke_check.py
start
NOT OPEN
早くオープンするといいですねー
追記
まさか同じことしてる人がいるとは...
http://qiita.com/touyoubuntu/items/af5d8e9e69e099945da1