2010年10月20日水曜日

Google Buzz APIで検索した時に返ってくるデータフォーマット(Atom形式)

TwitterのSearch APIと同じように、Google Buzz APIでも、searchクエリにパラメータを与えて、HTTP GETリクエストを発行して検索する。

例:
https://www.googleapis.com/buzz/v1/activities/search?lat=42.370498&lon=-71.083603&radius=100&prettyprint=true&alt=atom

「いつ、どこで、誰が、何をつぶやいたのか」という情報だけに限ると、チェックするタグは、以下にまとめたものくらい。

※Atom形式
<feed>

  <entry>
    <!-- メッセージ -->
    <title>あいうえお</title>

    <!-- 投稿日 -->
    <published>2010-10-15T06:51:05.485Z</published>

    <author>
      <!-- gmailアカウントの姓名 -->
      <name>おおつかみさほ</name>

      <!-- ユーザのサムネイル画像パス -->
      <link rel='photo' type='' href='' />

    </author>
    <activity:object>
      <buzz:attachment>
        <!-- 添付写真パス -->
        <link rel='enclosure' type='' href='' />

        <!-- 添付写真のプレビュー画像(小さめ)パス。1枚でも複数のタグが含まれる? -->
        <link rel='preview' type='' href='' />

      </buzz:attachment>
    </activity:object>

    <!-- 投稿された場所の緯度経度 -->
    <georss:point>42.370498 -71.083603</georss:point>

  </entry>

  <!-- 以下、結果件数だけ、entryタグが連続する -->

</feed>
これだけ押さえていれば、「いつ、どこで、誰が、何をつぶやいたのか」を表示できる情報が最低限集められる。


ちなみに、レスポンスデータの全タグを列挙すると以下になる。
<?xml version="1.0" encoding="UTF-8"?>

<feed>
  
 <!-- httpsから始まる、発行したリクエストのURI -->
 <link rel="" type=""/>
 <!-- 検索結果をブラウザなどで表示した時のタイトル -->
 <title></title>
 <!-- 検索結果内の最も新しい更新日 -->
 <updated></updated>
 <!-- この検索のID -->
 <id></id>
 <generator uri="http://www.google.com/buzz">Google Buzz</generator>
 
 <entry gd:kind="buzz#activity">
  <title></title>
  <published></published>
  <updated></updated>
  <!-- このBuzzのID -->
  <id></id>
  <!-- このBuzzのURI -->
  <link rel="alternate" type="text/html" href=""/>
  <!-- このBuzzのフィード -->
  <link rel="self" type="application/atom+xml" href=""/>
  <!-- このBuzzのコメントのフィード -->
  <link rel="replies" type="application/atom+xml" href=""/>
  
  <author>
   <!-- ユーザID(数字)-->
   <poco:id></poco:id>
   <poco:photoUrl></poco:photoUrl>
   <name></name>
   <!-- ユーザのプロフィールURI-->
   <uri></uri>
   <link rel="photo" type="" href=""/>
   <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
  </author>
  
  <!-- メッセージ。titleと同じもの -->
  <content type="html"></content>
  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
  
  <activity:object>    
   <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
   <!-- メッセージ。titleと同じもの -->
   <content type="html"></content>
   <buzz:original-content type="text"/>
   <!-- このBuzzのURI -->
   <link rel="alternate" type="text/html" href=""/>
   <!-- このBuzzに添付されたデータ -->
   <buzz:attachment>
    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>
    <link rel="enclosure" type="image/jpeg" href="/>
    <link rel="alternate" type="text/html" href=""/>
    <link rel="preview" type="image/jpeg" href=""/>
   </buzz:attachment>
  
 </activity:object>
  
  <source>
   <activity:service>
    <title>Mobile</title>
   </activity:service>
  </source>
  
  <!-- このBuzzを見る権限-->
  <buzz:visibility>
   <buzz:aclentry type="group">
    <poco:id>G:@me:@public</poco:id>
    <uri>https://www.googleapis.com/buzz/v1/people/@me/@groups/G:@me:@public?alt=atom</uri>
    <poco:name>Public</poco:name>
   </buzz:aclentry>
  </buzz:visibility>
  
  <!-- likedの件数やURI -->
  <link rel="http://schemas.google.com/buzz/2010#liked" type="application/poco+xml" href="" buzz:count="0"/>
  <georss:point></georss:point>
  <!-- 郵便番号など-->
  <georss:featureName></georss:featureName>
  
  <poco:address>
   <!-- 投稿されたロケーションをフォーマットした文字列 -->
   <poco:formatted>X-X 〇〇町, Atsugi, Kanagawa Prefecture, Japan</poco:formatted>
  </poco:address>
 
</entry>

</feed>

BuzzのデフォルトのレスポンスフォーマットはAtom。TwitterはJSON推奨で、Atom形式も現状は使用できるが、今後はサポートされなくなる。

PubSubHubbubもフィードが必要だし、BuzzはAtomとの親和性が高いんでしょうか。