LoginSignup
29
29

More than 5 years have passed since last update.

Pokemon Goのリリースに悶々とするのが嫌だからリリースを検知してツイートするスクリプトをつくった話

Last updated at Posted at 2016-07-15

結果...

自分のスクリプトの通知が来る前にリリースをTwitterで検知してしまい、普通に手動でツイートするはめになりました。
僕の方法と、もうひとつhaminikuさんの方法の両方のスクリプトを動かしてみたのですが、どちらもリリースを検知するには至りませんでした。残念......

(なお完全に検知できないわけではなく、検索上位にあがってくるようになった現在ではしっかりGotchaしてくれます)

きっかけ

Twitterで見ているとそろそろ日本でリリースなのかどうなのかみたいな感じで、いろんな情報が錯綜してその度AppStoreで検索して無くてみたいなことを延々と繰り返さなければならず、悶々としてしまうのでスクリプトで通知できないかと思ったのがキッカケです。

追記:
こちらの記事を参考にリリースされたら僕のTwitterアカウント(@touyoubuntu)でリンクをつぶやくようにしています。ぜひ!(現在はpyenvの闇に飲まれています汗)→完成しました!

アプリケーションが有効になるまでしばらく時間がかかるためテストツイートを確認するのが大変でしたが、どうやら大丈夫なようです。具体的には以下のような関数を下のGotchaのところで呼び出しています。

tweet.py
def tweet():
    twitter = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET, resource_owner_key=ACCESS_TOKEN, resource_owner_secret=ACCESS_TOKEN_SECRET)
    params = {"status": "日本でついにPokemon Goがリリースされたっぽい! http://itunes.apple.com/jp/app/pokemon-go/id1094591345?mt=8"}
    req = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params=params)
    print req.status_code

仕組み

基本的にiTunesSearchAPIを利用します。開発元はNiantic, Inc.とわかっているのでIngressのsellerNameをコピーして活用しました。

(よく規約を読んでいないのでビクビクしつつ)30秒に一回、pokemon goでサーチしその中にNiantic, Inc.の製品がないかを探しています。

pokemon_go_alert.py
import urllib
import urllib2
import json
import time

url = 'https://itunes.apple.com/search?term=pokemon+go&country=jp&media=software&entity=software&lang=ja_jp'

def func():
    while True:
        try:
            r = urllib2.urlopen(url)
            root = json.loads(r.read())
            for data in root['results']:
                if u'Niantic, Inc.' in data[u'sellerName']:
                    print "Gotcha!"
                    tweet()
                    return
            print "has not been released yet in Japan"
        finally:
            r.close()
        time.sleep(30.0)

func()

mainメソッドにしなかったのはノリです。こうすることによって30秒ごとにhas not been released yetかGotcha!を表示しあった場合はスクリプトを終了します。

このGotchaの部分をTwitterでつぶやくようになどと変えたりしてもうちょっと間隔短くすればPokemon Goリリース最速検知も夢ではないですね。

まとめ

ひさしぶりにPythonを書いてみました。iTunesAPIで調べるとあるとされているsellerUrlがなかったのが精度を上げる点で惜しかったなと思います笑

なにか問題とかさらなる改善案があれば気軽にコメントください。

Pokemon Goまだかなぁ...

参考

追記

電話をかけてくれる処理を埋め込んでおなじことをしている人がいました笑
【スタダ】ポケモンGOがリリースされたら電話掛かってくるスクリプト

RubyでSlackに通知するようにした人
Pokemon Go を iTunes で検索するのつらすぎるので crontab 仕込んだ

みんな同じような時間に記事つくってるのめっちゃ面白いですね笑

29
29
2

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
29
29