気になるブログエントリとかを読みやすく整形してくれるみんな大好きReadability。自分のアプリに組み込めるようにAPIも公開されています。が、API Docsの冒頭に次のような一文が。
All requests to the Readability service require access tokens.
認証マストですって。OAuth。わざわざページを読みやすくするためだけにOAuth認証なんてやってられません。現にみんな大好きReederは認証しなくてもReadabilityによる整形が可能じゃないですか!
というわけで、認証せずに使えるReadabilityの非公式なAPIをご紹介します。認証せずにページを整形するには、次のような手順を踏めば良いみたいです。
- CSRFトークンを取得
- 記事IDとセッションIDを取得
- 整形済みドキュメントを取得
こんな感じですね。ではもう少し詳しく書いていきます。
CSRFトークンを取得
こいつがないとリクエストを撥ねられます。http://www.readability.com/shorten
にGETリクエストを投げると、csrftoken
という名前のCookieを返してきます。
記事IDとセッションIDを取得
http://www.readability.com/~/
にPOSTリクエストを送ります。このとき、さきほど取得したcsrftokenをCookieフィールドにセットします。加えて、X-CSRFToken
というヘッダも用意して、ここにもcsrftokenの値をセットします。リクエストボディはurl={記事URL}
といった感じです。
するとレスポンスにsessionid
というCookieを返してきます。レスポンスボディは次のようなJSONです。
{
"article": {
"url": "/articles/srfhrcfs",
"domain": "ja.wikipedia.org",
"excerpt": "Cocoa(ココア)は、Mac OS…",
"title": "Cocoa"
},
"shortened_id": "srfhrcfs",
"success": true,
"original_url": "http://ja.wikipedia.org/wiki/Cocoa"
}
ここで、shortened_id
が記事IDです。
整形済みドキュメントを取得
あとはhttp://www.readability.com/articles/{shortened_id}
にsessionid
CookieをつけてGETリクエストを送れば整形されたドキュメントとして返ってきます。
まとめ
微妙に面倒くさいし、そもそも公式に用意されたものではないので、at your own riskで。いつ使えなくなってもおかしくないですよね。
一応、サンプルコード(Cocoa)をGitHubにおいておきました。