【스타다】 포켓몬 GO가 출시되면 전화가 걸리는 스크립트

전세계에서 포켓몬 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

전화가 왔습니다. 30초 정도 전화가 계속 진동합니다.


완제품



두 개의 스크립트를 결합하여 포켓몬 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

빨리 열면 좋다.

추가



설마 같은 일을하는 사람이 있다고 ...
ぃ tp // 코 m / 토요 부츠 / ms / 아 f5d8 99 69 099945 1

좋은 웹페이지 즐겨찾기