第一段階完成(多分...)

foo_playcountにiTunesの再生履歴をインポートする試み、第一段階としてiTunesから情報を取ってきてSQLiteデータベースを作成するRubyスクリプトが完成した。

改善していく部分はあるだろうが、基本部分は出来上がった。というより、スクリプトを走らせて気がついたが、iTunesライブラリ内で、タグ情報が不完全な楽曲が多々あり、修正して行かないとまずそうな雰囲気。確認が大変そうだ。

iTunes Storeで購入したファイルのうち、DRMがかかっているファイルはfoobar2000では再生できないからfoobar2000の環境設定で読み込み対象外にしているので、データ作成対象外にしたかった。が、それはiTunesのトラック情報からファイル名を取得して、末尾が「m4p」になっていればよい、という単純比較でできるはずだったのだが、正規表現を理解できていなかったのでうまく動いていなかった。なかなかバグが取れなかった部分。

元にしたスクリプトは、走らせるごとにテーブルをDROP & CREATEして全レコードを作っていたのだが、それだと調べたfoo_playcountの「ID」を保存しておくことができないことになってしまうので、テーブル定義を別スクリプトに切り出し、また、本体部分も、トラックのキー(曲名、アルバム、アーティスト、ディスク番号、トラック番号)によってSELECTして、UPDATEもしくはINSERTをする仕様に改めた。これで多分データを蓄積し、完全移行時のデータをSQLite上に作れる。

次の段階は新規でRubyスクリプトを作成し、今回出力したSQLiteテーブルを読みだして、「ID」がセットされたレコードを取得し、foo_playcountにインポート出来る形式のXMLファイルを出力することである。まぁ、Rubyがわかっていないので、記述方法についてはネットで調べながらになるだろうが、アルゴリズムというか、仕様については調査が済んでいるのでコードに変換するだけだ。

あとは力技で「ID」値を拾い集めるだけか。本気。18000トラックとすると1日100トラックで半年、1日1000トラックで18日。少しずつiTunesライブラリ増えていくだろうから難しいな。時間はあるから気合いだ。そのうち何かいい方法見つかるかもしれない。

コメント