WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

未公開の Google Reader API を探る

先日、大幅にアップグレードした Google Reader ですが、その API を独自に解析されているページを見つけました。もっとも、「Google Reader API」でググるとトップにくるページですので皆さんご存知かもしれませんが。

http://www.niallkennedy.com/blog/archives/2005/12/...
※リンク先は 2005 年 12 月とだいぶ古い記事ですのでご注意ください。

とても興味深い内容ですし、軽く探しただけでは日本語の資料は見当たらなかったので、今日はこのネタを書いてみることにします。プログラミングカテゴリへの引越し第一弾の記事としても適当なのではないかなと(^^ゞ。それでは、上記の記事で解説されている API を個別にご紹介していきます。

フィードの取得

Google Reader API は、基本的に通常の HTTP リクエストで呼び出します。とくに GET メソッドを使うものはブラウザのアドレスバーへの手打ちで簡単に試せますので、 Google Reader ユーザーの方はぜひやってみてください。

それではまず、 Google Reader から任意のフィードを取得する方法から。以下の URL で GET すると、 Atom 形式でフィード全体を取得することができます。

http://www.google.com/reader/atom/feed/<フィードのURL>?n=<取得するアイテム数>

結果はソースの形式に関わらず Atom 形式で返りますので、 RSS→Atom コンバータとしても使えます(笑)。例として、以下の URL はこの blog の RSS フィードの最初の 5 件を表示取得します。

http://www.google.com/reader/atom/feed/http://webos-goodies.jp/index.rdf?n=5

ユーザーが購読しているフィードの取得(動作せず)

以下の URL で GET すると、ユーザーが購読しているフィードのリストが取得できる・・・と書いてあるのですが、残念ながら現在は動作しないようです。

http://www.google.com/reader/atom/user/<ユーザーID>/pref/com.google/subscriptions

上記の「ユーザーID」はアイテムの公開ページの URL に含まれている 20 桁の数値です。ページ右上の Settings をクリックし、 Tags タブの「Your shared items」のところにある「view public page」のリンクで確認するのが早いと思います。以降の API でのユーザーIDも同じものです。

フィードのアイテムの取得

フィードのアイテムの取得は全フィードを対象にしています。とりあえず前述の記事で紹介されているものの中には、特定のフィードを対象にするものはありませんでした。また、アイテム取得系の API では以下のパラメータが有効です(いずれもオプション)。

  • n=<取得するアイテム数>
  • xt=user%2f<ユーザーID>%2flabel%2f<除外するタグ>

それでは、まとめてご紹介します。すべて GET メソッドです。

未読アイテムの取得

http://www.google.com/reader/atom/user/<ユーザーID>/state/com.google/reading-list

試してみたところ、どうも未読と既読の判定が Google Reader 上と一致していない気が・・・。なにか別の意味なのかもしれませんが、よくわかりません(^^;

既読アイテムの取得

http://www.google.com/reader/atom/user/<ユーザーID>/state/com.google/read

タグを指定してアイテム取得

http://www.google.com/reader/atom/user/<ユーザーID>/label/<タグ>

Star 付きのアイテム取得

http://www.google.com/reader/atom/user/<ユーザーID>/state/com.google/starred

フィードの追加・削除

フィードを購読したり、購読を停止したりするには、以下の URL に POST します。

http://www.google.com/reader/api/0/edit-subscription

パラメータは以下のとおりです。

ac=<subscribe または unsubscribe>
フィードの購読を開始するか、停止するかの指定。
s=feed%2F<フィードのURL>
購読開始 or 停止するフィードの URL に URL エンコードをかけたもの。
T=<トークン>
"http://www.google.com/reader/api/0/token" で取得できるトークン。

なお、この API は私のほうでは動作確認していませんので、使用の際はご注意ください。

タグの追加

タグの追加は以下の URL に POST します。

http://www.google.com/reader/api/0/edit-tag

パラメータは以下なのですが、残念ながら最後の "T" だけ生成方法が不明のようです。 Ethereal でパケットを覗いてみると、確かにハッシュのような文字列が並んでいます。このパラメータについての情報をお持ちの方、教えていただけると嬉しいです。 colun さんに情報をいただきました。ありがとうございます!

s=feed%2F<フィードのURL>
購読開始 or 停止するフィードの URL に URL エンコードをかけて指定。
i=<アイテムID>
タグを付けるアイテムの指定です。アイテムを取得したときの id タグの中身である「tag:google.com,2005:reader/item/????????????????」を URL エンコードしたものを指定すればよいと思います。フィード自体にタグを追加するときは省略できます。
a=user%2F<ユーザーID>%2Flabel%2F<タグ>
リクエスト内容。フィード or アイテム、もしくは両方にタグを追加する場合。
a=user%2F<ユーザーID>%2Fstate%2Fcom.google%2Fstarred
リクエスト内容。 Star フラグをつける場合。
T=<トークン>
"http://www.google.com/reader/api/0/token" で取得できるトークン。

ついでに調べてみたところ、 "a" の代わりに "r" を使うとタグの削除になるようです。また、実際のリクエストでは "ac=edit-tags" というパラメータも指定されています。

以上、本日は Google Reader API をご紹介しました。案外簡単に使えそうですね。これだけあれば、 Google Reader のバックエンドを使用した独自のリーダーなんかも作れるのではないでしょうか。問題はタグの追加の "T" パラメータですか。情報お待ちしています(他力本願 ^^;)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles