57
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【スタダ】ポケモンGOがリリースされたら電話掛かってくるスクリプト

Last updated at Posted at 2016-07-15

世界中でポケモンGO旋風が起こっています。
日本版のポケモンGOがリリースされたら即電話が掛かってくるスクリプトをお昼休みに書いてみました。
これで最速ポケモンゲットだぜ( ・ㅂ・)و

スクリーンショット 2016-07-15 15.08.00.png

アーキテクチャ

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

電話掛かってきました。30秒くらい電話が振動し続けます。
upload_thumb.png

完成品

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

57
53
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?