正確に言うと、「Gameday」っていう今日の注目試合みたいな企画のためのデータベースなのだけど。
MLB.com Gameday | MLB.com: Gameday
これがオープンになってて自由に使えるみたい。
データベースはRESTチックにアクセスできそうな階層になっててルートはここ。
http://gd2.mlb.com/components/game/mlb/
探せば色んなデータが手にはいる。すげえ。
使い方は見ればわかると思うのだけど簡単に説明します。
詳しい使い方はこちらが参考になるかと。拾ったテキストファイルだけど。
http://vizsage.com/apps/mrmxy/app/docs/DataTransformations.txt
最新打撃成績を取得する
イチロー選手の場合なら、XMLは以下のURL。http://gd2.mlb.com/components/game/mlb/year_2011/batters/400085.xml
階層に分けてみるとこんな感じ。
- http://gd2.mlb.com/components/game/mlb/
- year_2011
- batters
- 400085.xml
- batters
- year_2011
「400085」というのは選手1人1人に割り振られているIDで、MLBの選手サイトなんかで取得できます。
(これを効率的に取得できる手段というのはちょっと無いかな…)
実際に取得できるデータはこんな感じ。
- ab=”1″ … 打席
- r=”0″ … 得点
- h=”0″ … 安打
- hr=”0″ … 本塁打
- rbi=”0″ … 打点
- sb=”0″ … 盗塁
- avg=”.268″ … 打率
- single=”0″ … 単打
- double=”0″ … 二塁打
- triple=”0″ …三塁打
- bb=”0″ … 四球
- cs=”0″ … 盗塁失敗
- so=”0″ … 三振
- err=”0″ … 失策
- hbp=”0″ … 死球
- last_at_bat=”Ground Out” … 最後の打席の結果
- s_ab=”284″ … シーズン打席
- s_hr=”0″ … シーズン本塁打
- s_rbi=”21″ … シーズン打点
- s_sb=”18″ … シーズン盗塁
- s_h=”76″ … シーズン安打
- s_r=”35″ … シーズン得点
- s_single=”62″ … シーズン単打
- s_double=”12″ … シーズン二塁打
- s_triple=”2″ … シーズン三塁打
- s_bb=”22″ … シーズン四球
- s_cs=”4″ … シーズン盗塁失敗
- s_so=”22″ … シーズン三振
- s_err=”3″ … シーズンエラー
- s_hbp=”0″ … シーズン死球
- game_id=”2011/06/17/phimlb-seamlb-1″ … 試合ID
- game_pk=”287956″ … スタジアムID
- update_AB=”4″ … 不明
これだけ取れれば十分だなぁ。
特定の日の成績を取得する
2011/06/15のイチロー選手の打撃成績はこれで取れます。http://gd2.mlb.com/components/game/mlb/year_2011/month_06/day_15/batters/400085_1.xml
取得できるデータは上の場合と同じ。
URLの選手IDの後に「_1」と付いているのはダブルヘッダー対策。
同日に複数試合があった場合には、「_1」「_2」と分けてファイルが作成されます。
特定の試合に出場しているプレイヤー一覧を取得する
ゲームIDを使用すれば出来ます。ゲームIDはさっきのイチロー選手のデータにも含まれていたこれ(2011/06/17/phimlb-seamlb-1)です。
これをURLに変換するとこんな感じになります。
http://gd2.mlb.com/components/game/mlb/year_2011/month_06/day_17/gid_2011_06_17_phimlb_seamlb_1/
プレイヤー一覧はこれで。
http://gd2.mlb.com/components/game/mlb/year_2011/month_06/day_17/gid_2011_06_17_phimlb_seamlb_1/players.xml
両チームの選手、監督、コーチ、アンパイヤ一覧が取得できます。
充実しすぎwww
データを扱うAPIは?
残念ながらMLBで提供?されているのはここまでで、実際にこれらを扱うためのAPIは提供されていませんが、Rubyプログラマ向けには「Gameday API」と言うのがあるみたいです。
timothyf/gameday_api – GitHub
僕はあまりRubyが得意ではないので実際に使うまではしていませんが、
欲しいデータに合わせてオブジェクトを作成し、メソッドを指定することでデータが取り出せるようになってるみたい。
サンプルにあるのは「2009年のデトロイトタイガースの全先発ピッチャーの成績」とか。
これは便利。
他の言語ではきちんとしたのが見つからなかったので、欲しいなら自分で書くしかないかな。
(Pythonも一応あるけど機能が限定的)
しばらく遊べそうです。わーい。