〔作品2〕Apple iTunes音楽リストのHTML化
~第1章~ iTunes音楽リストのXMLの構造
2006年2月号掲載記事
こんにちは。インフォテリアの野中です。
通勤や通学などの電車の中で、音楽を聴いている方も多いと思います。ポータブルオーディオプレーヤーは、カセットテープからCDやMD、そしてデジタルオーディオプレーヤーへと変わってきています。その中でもApple社製のiPodはブームの火付け役になったと言えるのではないでしょうか。iPodを使っている方は、同社製のiTunesを利用していると思いますが、そのiTunesでもXML(iTunes Music Library.xml)が利用されています。その利用目的は、iTunesの音楽やプレイリストを他のアプリケーションなどでも使えるようにするためにあります。今回のテーマは、『iTunesの音楽リストを元にWeb公開用のデータを作成する』です。
それでは「iTunes Music Library.xml」をメモ帳などのテキストエディタで開いてみましょう。「iTunes Music Library.xml」はデフォルトの設定でC:\Documents and Settings\<ユーザー名>\My Documents\My Music\iTunesにあります。
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">
・
・
|
「iTunes Music Library.xml」の2行目には、外部サブセットDTDへの参照が記されています。実際に"http://www.apple.com/DTDs/PropertyList-1.0.dtd"を見てみましょう。
http://www.apple.com/DTDs/PropertyList-1.0.dtd |
<!ENTITY % plistObject "(array | data | date | dict | real | integer | string | true | false )" >
<!ELEMENT plist %plistObject;>
<!ATTLIST plist version CDATA "1.0" >
<!-- Collections -->
<!ELEMENT array (%plistObject;)*>
<!ELEMENT dict (key, %plistObject;)*>
<!ELEMENT key (#PCDATA)>
<!--- Primitive types -->
<!ELEMENT string (#PCDATA)>
<!ELEMENT data (#PCDATA)> <!-- Contents interpreted as Base-64 encoded -->
<!ELEMENT date (#PCDATA)> <!-- Contents should conform to a subset of ISO 8601 (in particular, YYYY '-' MM '-' DD 'T' HH ':' MM ':' SS 'Z'. Smaller units may be omitted with a loss of precision) -->
<!-- Numerical primitives -->
<!ELEMENT true EMPTY> <!-- Boolean constant true -->
<!ELEMENT false EMPTY> <!-- Boolean constant false -->
<!ELEMENT real (#PCDATA)> <!-- Contents should represent a floating point number matching ("+" | "-")? d+ ("."d*)? ("E" ("+" | "-") d+)? where d is a digit 0-9. -->
<!ELEMENT integer (#PCDATA)> <!-- Contents should represent a (possibly signed) integer number in base 10 --> |
このDTDの主な特徴は、
- plist要素とarray要素は、パラメータ実体で定義されており、array、data、date、dict、real、
integer、string、true、falseのいずれかの要素を子要素として持つことができる
- dict要素は、key要素とパラメータ実体で定義された要素を子要素として持つことができる
- true要素、false要素は空要素として定義されている
などです。
これらを踏まえて、もう一度「iTunes Music Library.xml」を見てみましょう。
・
・
<plist version="1.0">
<dict>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>
<key>Application Version</key><string>6.0.1</string>
<key>Features</key><integer>1</integer>
<key>Music Folder</key><string>file://localhost/C:/Documents%20and%20Settings/ynonaka/
My%20Documents/My%20Music/iTunes/iTunes%20Music/</string>
<key>Library Persistent ID</key><string>E35AE684E32B937B</string>
<key>Tracks</key>
<dict>
<key>37</key>
<dict>
<key>Track ID</key><integer>37</integer>
<key>Name</key><string>Holst: The Planets, Op. 32, H 125 - 1. Mars, The Bringer Of War</string>
<key>Artist</key><string>Sir Georg Solti; London Philharmonic Orchestra</string>
・
・
</dict>
・
・
</dict>
<key>Playlists</key>
<array>
<dict>
<key>Name</key><string>ライブラリ</string>
<key>Master</key><true/>
<key>Playlist ID</key><integer>60</integer>
<key>Playlist Persistent ID</key><string>E35AE684E32B937C</string>
<key>All Items</key><true/>
<key>Playlist Items</key>
<array>
<dict>
<key>Track ID</key><integer>37</integer>
・
・
</dict>
</array>
</dict>
・
・
</array>
</dict>
</plist>
|
「iTunes Music Library.xml」の<key>Major Version</key>から<key>Library Persistent ID</key>までは、インストールされているiTunesの情報が記されています。<key>Tracks</key>からは、iTunesに登録されている音楽データの情報、<key>Playlists</key>からは、iTunesに登録されているプレイリストの情報が記されています。
このデータ構造は、項目の追加や削除に柔軟に対応できる構造に設計されています。しかし、このままのデータを元にHTML文書に変換するには、少しテクニックが必要になると思います。皆さんなら、どのような処理を行ないますか?
出力イメージはこのような感じです。
続きは次回に・・・
「XML工房」のIndexへ戻る
ページトップへ▲