結果...
自分のスクリプトの通知が来る前にリリースをTwitterで検知してしまい、普通に手動でツイートするはめになりました。
僕の方法と、もうひとつhaminikuさんの方法の両方のスクリプトを動かしてみたのですが、どちらもリリースを検知するには至りませんでした。残念......
(なお完全に検知できないわけではなく、検索上位にあがってくるようになった現在ではしっかりGotchaしてくれます)
きっかけ
Twitterで見ているとそろそろ日本でリリースなのかどうなのかみたいな感じで、いろんな情報が錯綜してその度AppStoreで検索して無くてみたいなことを延々と繰り返さなければならず、悶々としてしまうのでスクリプトで通知できないかと思ったのがキッカケです。
追記:
こちらの記事を参考にリリースされたら僕のTwitterアカウント(@touyoubuntu)でリンクをつぶやくようにしています。ぜひ!(現在はpyenvの闇に飲まれています汗)→完成しました!
アプリケーションが有効になるまでしばらく時間がかかるためテストツイートを確認するのが大変でしたが、どうやら大丈夫なようです。具体的には以下のような関数を下のGotchaのところで呼び出しています。
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.の製品がないかを探しています。
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まだかなぁ...
参考
- iTunes APIの使い方まとめ
- pythonのurllib2でjsonを取得して解析する
- pythonでdelay的な待ち時間を作る
- Pythonの「文字列に○○が含まれているか」の判定について気になったこと
- Pokemon Go - Niantic
追記
電話をかけてくれる処理を埋め込んでおなじことをしている人がいました笑
【スタダ】ポケモンGOがリリースされたら電話掛かってくるスクリプト
RubyでSlackに通知するようにした人
Pokemon Go を iTunes で検索するのつらすぎるので crontab 仕込んだ
みんな同じような時間に記事つくってるのめっちゃ面白いですね笑