書いてみました!
About
iTunes が保持している楽曲情報には、主に下記のようなものが含まれるのですが、
- 曲名・アルバム名・アーティスト名 etc.
- 再生回数・スキップ回数 etc.
- ファイルサイズ・ファイルロケーション etc.
これらを BigQuery に蓄積するとおもしろいかなぁと思い、
- iTunes が出力している楽曲情報ファイル
iTunes Music Library.xml
をパース・csvに出力 - 出力した csv ファイルを
Google Cloud Storage
にアップロード - アップロードしたファイルを
Google BigQuery
にロード
...といったことを行うスクリプトを、いま流行りの Go で書いてみました。
ちょっとイキって、 Goramoph
なんて名前を付けてしまいました。
利用するまでにちょっとした準備が必要なので、こちらにまとめます。(GitHub の README にも書いたのですが、無理して英語で書いてしまったのでわかりにくくなってしまったもので...)
ソースコード
準備
Google Cloud SDK をダウンロード・インストール・認証する
-
https://cloud.google.com/sdk/
- こちらもどうぞ http://qiita.com/yuko/items/1c4ee5b081c5b6a3ac8a
-
zsh
をお使いの場合、http://tsukaby.com/tech_blog/archives/482 もご参考まで。 -
gcloud
コマンドが使用可能になっていればOKです
- 最低限、下記の権限についての承認が必要です
Google Cloud Storage
Google BigQuery
Goramoph
用の Google Cloud プロジェクトを作成する
- https://console.developers.google.com/ にアクセスし、サインインしてください
-
Create Project
ボタンを押し、プロジェクトを作成します- プロジェクト名は任意の文字列を指定して下さい
- プロジェクトIDには、ユニークな文字列を指定して下さい (ex.
a-know-goramoph
)
-
Google Cloud Storage
,Google BigQuery
を使用するため、課金設定が必要です。 -
gcloud
コマンドを用いて、作成したプロジェクトを設定します$ gcloud config set project <project-id>
- ex.
$ gcloud config set project a-know-goramoph
Goramoph
を clone する
-
$ git clone git@github.com:a-know/goramoph.git
-
go get
したものでも問題ないかどうかは確認できていません、すみません
-
- これで準備完了です
使用方法
- 基本的には
$ go run goramoph.go /path/to/iTunes Music Library.xml
を実行すればOKです- 通常、
iTunes Music Library.xml
は "ミュージック" などのフォルダ内の iTunes 関連フォルダにて管理されています
- 通常、
$ go run goramoph.go ~/Downloads/iTunes\ Music\ Library.xml
Starting goramoph.
xml parsing...done
exporting csv...done
getting Google Cloud Project name...project_name: a-know-goramoph_test
checking bucket...bucket has not created yet, now creating...bucket create success
uploading csv...done
checking dataset...dataset has not created yet, now creating...dataset create success
checking table...this playdata has not load yet, now loading...load to table success
remove csv file on Cloud Storage...done
completed.
-
iTunes Music Library.xml
の最終更新日を元に csvファイル・BigQuery テーブルの作成を行います- なので、
Guard
とかと組み合わせると幸せになれるかもしれません :)
- なので、
スクリーンショット
- 例えば
SELECT Artist, Count(PlayCount) as count FROM [a_know_goramoph_ds.20141108135449] GROUP BY Artist order by count desc
というような SQL を BigQuery に投げることで、"アーティスト毎の再生回数" が取得できたりします
↑こんなかんじです
- 複数のテーブルを跨った SQL を投げたりすれば、"期間における再生回数順で楽曲をリストアップ" とかもできると思います
Goramoph
の挙動
-
iTunes Music Library.xml
をパースします。 - パースした結果を csv ファイルとして、
./csv
に出力します。- csv ファイル名は、
iTunes Music Library.xml
の最終更新日を利用します。
- csv ファイル名は、
- csvファイルを
Google Cloud Storage
にアップロードします。- バケット名は
<project-id>-csv
です
- バケット名は
- csvファイルの内容を
Google BigQuery
の データセット・テーブルにロードします。- データセット名は
<project-id>_ds
です - テーブル名は
<last-modify-date>
です
- データセット名は
-
Google Cloud Storage
にアップロードしたファイルを削除します- ローカルのファイルは削除せずそのままです
注意点など
-
Google Cloud Storage
,Google BigQuery
との連携は、gcloud
を外部コマンド呼び出しすることで実現しています- ゆくゆくは外部コマンドに頼らない形にしていければと思っています
-
Google Cloud Storage
,Google BigQuery
は課金設定が必要なサービスです- 課金については、ご利用の前に十分にご確認下さい。
-
Goramoph
を利用したことによる課金額に関しては一切関知致しませんので、ご了承下さい。
今後の予定
- 以前作成した下記のようなソフトウェア・サービスがあるのですが、いつかは
Goramoph
をそれらに繋げたいな〜っと思っています。-
sa-boom client
- JavaFX で作成
-
sa-boom!!
-
Google App Engine / Java
で作成
-
-
sa-boom client