App StoreのレビューをXSLTで取り出す
App Storeに公開されているアプリのレビューを取り出すXSL(XML Stylesheet)を書きました。
以下の手順で使います。
XSLTは特定のプログラミング言語に依存しない仕組みなので、将来的にApp Store XMLのスキーマが変わってしまった場合でもXSLを修正するだけで済みます。中間言語が間に入っている感じですね。まあ、AppleがAPIを提供してくれればいいのですけど。
使用例
ここでは、Google Inboxアプリのレビューを取得してみましょう。
まず、curl
コマンドでApp Store XMLをダウンロードします。905060486
はGoogle InboxアプリのIDです。143462
は日本のApp StoreのIDで、末尾に -1
を使えると英語でレスポンスが返ります。詳細は Scraping AppStore Reviews が参考になります。
# Google Inbox app_id='905060486' # App Store in Japan, language in English app_zone='143462-1' # Download App Store XML curl -o appstore.xml \ -L \ -H "X-Apple-Store-Front: $app_zone" \ -A "iTunes" \ "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=$app_id&pageNumber=0&sortOrdering=4&onlyLatestVersion=false&type=Purple+Software"
xsltprocコマンドでApp Store XMLを変換します。xsltprocコマンドはOS Xに標準で入っています。
xsltproc appstore.xslt appstore.xml
変換結果の例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?> <app xmlns:i="http://www.apple.com/itms/" name="Inbox by Gmail - a new email app that works for you" category="Category: Productivity" updated="Updated Jul 15, 2015" version="Current Version: 1.3.4" size="70.0 MB"> <review title="..." stars="2" author="..." version="Version 1.3.4" date="Jul 26, 2015" id="viewVote12345678">...</review> </app>
変換結果には以下が含まれます。
- アプリのメタデータ
- 名前
- カテゴリ
- 更新日
- 最新バージョン
- サイズ
- レビュー
- タイトル
- 本文
- 投稿者
- 対象バージョン
- 投稿日
- ユニークなID
プログラムから使う
多くのプログラミング言語でXSLTを呼び出す仕組みが用意されています。また、適当なライブラリが見当たらない場合でもxsltprocコマンドを実行すれば変換結果を得ることができます。
とりあえずNode.jsでは適当なライブラリが見当たらなかった(あったけどネイティブビルドで失敗した)ので、xsltprocコマンドを実行する形で実装してみました。JavaやRuby、Pythonとかならもっと簡単にできるはず。XSLだけでなくいろんな言語の実装例も同梱したら便利になりそうです。もし、このXSLを活用したという方がいたらPull Requestをいただければと思います!