PythonでNike+の非公式APIを使ってみよう

みなさんNike+(http://nikerunning.nike.com/nikeos/p/nikeplus/ja_JP/)って知ってる?



最近ナイキのランニング用シューズを買ってその存在を知ったんだけど、これが結構な優れもの!
対応製品を購入して、センサーを靴の底にセットして走りだすと、ランニングした距離・ペース・時間・消費カロリーを記録してくれる。
そんでもってその情報をNike+の公式サイトで共有ができる。なかなか面白いでしょ?


TwitterFacebookともリンクしてる、はずなんだけど情報をアップしても一向にTwitterにもFacebookにもポストしやがらねえ!
こうなったら自分でTwitter or Facebookにランニングの記録をポストするようにしたい!
というわけで調べてみたら非公式のNike+ APIが存在することを発見。

Connecting to the Nike+ API with C# : http://www.wroolie.co.uk/2008/05/05/13/
Nike+のWeb API : http://mg6t.blogspot.com/2008/07/nikeweb-api.html


とりあえず使ってみよう!
※事前にLive HttpHeaderあたりで自分のuserIDの確認が必要。

# -*- coding: utf-8 -*-
import cookielib
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

cj = cookielib.CookieJar()
cjhdr = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cjhdr)

loginurl = 'https://secure-nikeplus.nike.com/nikeplus/v1/services/app/external_profile_login.jsp'
postdata = {}
postdata['login'] = 'your mailaddress'
postdata['password'] = 'your password'
postdata['locale'] = 'ja_JP' #localeはja%5Fjpじゃ駄目
params = urllib.urlencode(postdata)

#ログイン
opener.open(loginurl, params).read()

userID = 'your userID'
runlist = 'https://secure-nikeplus.nike.com/nikeplus/v1/services/app/run_list.jsp?userID=%s' % userID
soup = BeautifulSoup(opener.open(runlist).read())
print soup.prettify()

・実行結果

<?xml version='1.0' encoding='utf-8'?>
<plusservice>
 <status>
  success
 </status>
 <runlist endindex="-1" startindex="0">
  <run id="1214128616" workouttype="standard">
   <starttime>
    2010-04-29T22:14:08+09:00
   </starttime>
   <distance>
    3.9297
   </distance>
   <duration>
    1284000
   </duration>
   <synctime>
    2010-04-29T13:56:57+00:00
   </synctime>
   <calories>
    260.0
   </calories>
 ・
 ・
 ・

これは公式でAPI出してもらいたいなあ。
面白いアプリができそうな予感。