hotpepper4sを作ってみた(Scala AC 23日目)
はじめに
私は「ぽんこつまっぷ」という、自分で使う為の地図作っているのだが
食べログAPIが優秀と聞いて、こいつに使えないかなー、折角だし試そう、と思ったのだが、食べログAPIは「新規受け付けを終了しました」だそうで…。
色々調べてみたらHotPepperさんがAPI公開してるし、簡単にキー取得できたので、Scalaから簡単に扱えるようにScala向けのAPIラッパー(?)作ってみた。
使うまで
まずHotPepperAPIのkeyを取得。リクルートのWebサービスは統合されているので、リクルートで登録
http://webservice.recruit.co.jp/index.html
新規登録から行ける。メールアドレスのみで簡単。
次にhotpepper4sをgitからcloneして
https://github.com/ponkotuy/hotpepper4s
src/main/resouces/hotpepper4s.confに
authentication.key = {{key}}
と置けばおっけー。あとはsbt runでSampleが走るので煮るなり焼くなり御自由にどうぞ。
使い方
力尽きたのでsampleをぺたっと。なお、gourmetSearchとshopSearchは内部的に完全に別物で、shopSearchでしか引っ掛からない店とかもある模様。多分後者が旧フォーマットということではないかと勝手に予想している。
println("---- ID検索 ----") println(HotPepper.gourmetSearchById("J001040295", Type.LITE)) println("---- Name検索 ----") HotPepper.gourmetSearchByName("花の舞", Type.LITE, count = 3).foreach(shop => println(shop.name)) // 1始まりなのでstart=3だと前のと被る HotPepper.gourmetSearchByName("花の舞", Type.LITE, count = 3, start = 3).foreach(shop => println(shop.name)) println("---- TEL検索 ----") println(HotPepper.shopSearchByTel("0332083008")) println("---- Keyword検索 ----") HotPepper.shopSearchByKeyword("花の舞 東京").foreach(shop => println(shop.name -> shop.address))
あと、一応HotPepper.gourmetSearch等に直接Queryを、Map[String, String]で渡せるようになってるので、実装されてない奴に関してはそちらで大体いける。ただし取得できるデータTypeは、手元で確認したのはType.LITEのみ。(Typeは取得する情報量で、Liteは文字通り少なめ)
詳しくはAPIのReferenceをどうぞ
実装状況
とりあえず動かすところまでは急ピッチでやってみたけど全然実装できてないです(滝汗)。とりあえずTODOリスト
- Lite以外のTypeへの対応
- マスター取得系APIの実装
- 継承関係の整理
- twitter4jっぽくページめくりの実装
- scaladoc
思った以上にAPI Requestの結果が汚いので、もう1枚レイヤー被せる必要あるかなー。