2014年4月27日日曜日

iTunesのライブラリデータ iTunes Music Library.xmlを読む

今作ろうとしているアプリに、iTunesのメタデータのインポート機能をもたせようと思っているので、試してみました。

iTunesの曲情報はすべてitlファイルというバイナリファイルに書かれていますが、同時にAppleの他の製品などから読み出しやすいように、xmlファイルも吐き出されるようになっています。このファイルはユーザごとに場所が決まっているようです。

http://support.apple.com/kb/HT1660?viewlocale=ja_JP

自分が使っているMac OSX 10.8.5と、iTunes 11.1.2というバージョンにおいては、iTunes Library.xmlではなくiTunes Music Library.xmlというファイル名になっていました。環境によって微妙に違いがあるのかな。

このファイルを見てみると、
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>

となっており、Appleの独自フォーマットPropertyListで定義されているようです。これはMac OSXでは一般的な.plistという拡張子のファイルで使われているフォーマットとなっています。

Wikipediaによると、辞書を
<dict>
<key>key</key>
<string>value</string>
</dict>

のような形式で保存するのが特徴のようです。

このファイルをPythonで扱うには、XMLをParseしないといけないかな、と思っていたんですが、ありました。plistlibというモジュール。しかもPython 2.6以上ではすべてのプラットフォームで標準で入っているようです。
import plistlib
import pprint

def read_itunes_xml():
pl = plistlib.readPlist('/Users/<username>/Music/iTunes/iTunes Music Library.xml')
pp = pprint.PrettyPrinter(indent=2)
print pp.pprint(pl)

このようにするだけで、簡単にiTunesライブラリのメタデータを表示することが出来ました。

pl['Tracks']の中には、すべての楽曲のAlbum, Artist, Bit RateなどのMP3タグを元にしたメタデータが入っています。

0 件のコメント:

コメントを投稿