すがブロ

sugamasaoのhatenablogだよ

ATND API の Ruby ラッパー Atnd4R を作りました

微妙に名前だけ出していましたけれど

ついにATND API リファレンスが正式にリリースされたので、こちらも正式に告知します。
githubの sugamasao/atnd4r · GitHub にプロジェクトページがあります。

Atnd4R とは何ですか

ATND APIRuby から使用するためのラッパーになります。
検索結果はうまいこと Ruby オブジェクトに変換されます。

どのように入手できますか

github に rubygems で置いてあるので、下記のようにインストールします。
github の URL を登録していない人のみ、上のコマンドも合わせて実行してください。

gem sources -a http://gems.github.com

sudo gem install sugamasao-atnd4r

また、プロジェクトページの Downloads ページから tgz 等の形式も取得可能です。

どのように使いますか

まず、require します

requre 'atnd4r'
イベントサーチAPIを使う場合

Atnd4r::get_event_list メソッドを実行してください。引数は Hash で、 {検索キー => 検索したい値} と渡します。

Atnd4r::get_event_list({:user_id => 1500})

検索したい値が複数ある場合は、配列として渡します。

Atnd4r::get_event_list({:user_id => [1500, 1]})

検索結果は以下のような、 Atnd4r::AtndAPI オブジェクトとして返却されます。

#<Atnd4r::AtndAPI:0x1561ac0
 @events=
  [#<Atnd4r::AtndEvent:0x155a1d0
    @accepted=48,
    @address="東京都中央区銀座8−4−17",
    @catch=
     "このイベントはATNDのデモです。実際に開催されることはありませんが、自由に参加/キャンセルをしてみてください(サブタイトル)",
    @description=
     "<h1>ここ(内容)の使い方</h1>\n<ul>\n<li>ここにイベントの内容を書きます</li>\n<li>簡単なHTMLを使うことができます</li>\n</ul>\n\n<h1>お知らせ</h1>\n<ul>\n<li><a href=\"http://atnd.org/users/profile\">http://atnd.org/users/profile</a>から、ATND内のユーザ名を設定することができますので、ぜひ変更してみてください。</li>\n</ul>",
    @ended_at=nil,
    @event_id=1,
    @event_url="http://atnd.org/events/1",
    @lat=35.6685393,
    @limit=48,
    @lon=139.7593983,
    @owner_id=1,
    @owner_nickname="knjko",
    @place="MTL",
    @started_at=Wed Sep 02 14:20:00 +0900 2009,
    @title="ATNDデモイベント(タイトル)",
    @updated_at=Wed Jan 14 15:06:00 +0900 2009,
    @url="http://atnd.org/",
    @users=[],
    @waiting=134>],
 @results_available=1,
 @results_returned=1,
 @results_start=1>

検索パラメータの詳細や、検索結果の値の意味などは公式ページをご確認下さい。

出席確認APIを使う場合

メソッド名以外は、ほぼ同じです。
Atnd4r::get_user_list メソッドを実行してください。引数は Hash で、 {検索キー => 検索したい値} と渡します。

Atnd4r::get_user_list({:user_id => 1500})

検索したい値が複数ある場合は、配列として渡します。

Atnd4r::get_user_list({:user_id => [1500, 1]})

検索結果は以下のような、 Atnd4r::AtndAPI オブジェクトとして返却されます。

#<Atnd4r::AtndAPI:0x105499c
 @events=
  [#<Atnd4r::AtndEvent:0x104cf6c
    @accepted=92,
    @address=nil,
    @catch=nil,
    @description=nil,
    @ended_at=nil,
    @event_id=202,
    @event_url="http://atnd.org/events/202",
    @lat=nil,
    @limit=100,
    @lon=nil,
    @owner_id=nil,
    @owner_nickname=nil,
    @place=nil,
    @started_at=nil,
    @title="1981s忘年会#2",
    @updated_at=Fri Dec 12 17:41:14 +0900 2008,
    @url=nil,
    @users=
     [#<Atnd4r::AtndUser:0x15d531c
       @nickname="すがまさお(id:seiunsky)",
       @status=1,
       @user_id=1500>,
     (中略)],
    @waiting=0>],
 @results_available=1,
 @results_returned=1,
 @results_start=1>

イベントサーチAPIとの一番の違いは、events プロパティに、Atnd4r::AtndUser オブジェクトの配列が入っていることです*1

もし不具合っぽいのがあれば

このエントリーのコメントとかでも良いのでご指摘頂けると助かります><
また、は atnd4r を使って動いてます!

というわけで

よかったら使ってくだしあ!

追記(2009/7/30)

詳細な使い方のエントリを書きました。
Atnd4Rの使い方 - @sugamasao.blog.title # => ”コードで世界を変えたい”

*1:もちろん、他にもAPIによって取得できる値の違いはあります