WMPスキンで複数のアーティスト名を表示する

Windows Media Player(WMP)のスキン作成時における自分用メモ。この内容を基にしたスキンをここで公開してます。

Q. WMPで初めに用意されているスキンのいくつかでは、アーティスト名などのメタ情報(属性)に複数の値が設定されていても、一つ目の値しか表示されない。例えば、桑田佳祐Mr.Childrenの共作「奇跡の地球」の場合は、桑田佳祐だけが表示される。これを改善して、全てのアーティスト名(や作曲者やジャンルなど)を表示させる方法は?

A. JScriptファイル(拡張子がjs)中のplayer.currentMedia.getItemInfoの後に、player.currentMedia.getItemInfoByTypeを追加する。

例えば、RevertというWMPに元々用意されているスキンでは、netgen.jsファイル中のアーティスト名を取得するところ

sz1 = player.currentMedia.getItemInfo( 'Author');

を以下に変更する。

sz1 = player.currentMedia.getItemInfo( 'Author');
var iIndex;
iIndex = player.currentMedia.getAttributeCountByType('Author','');
var iCount;
for(iCount = 1; iCount <= iIndex -1 ; iCount++) {
  sz1 = sz1 +'; '+ player.currentMedia.getItemInfoByType( 'Author','',iCount);
}

簡単に説明すると

  • 1行目:現在演奏している音楽ファイルのメタ情報の属性Authorの文字列を、変数sz1に代入する。ただし、getItemInfoは、メタ情報に複数の値が設定されていても先頭の値しか受け渡さない。
  • 3行目:メソッドgetAttributeCountByTypeでAuthor属性にいくつの値が設定されているかを得て、変数iIndexに代入する。*1
  • 6行目:getItemInfoByTypeを使ってAuthor属性の他の値を取得し、文字変数sz1に結合していく。全ての値を得るために、iIndex-1回だけgetItemInfoByTypeを呼ぶ必要がある。*2

ここではAuthor属性で書いたが、他の属性でも同じ。スキン作成自体は他で調べて下さい。

参考:Media.getItemInfoByType - Windows Media Developer Center

2008年11月6日に修正。

*1:「奇跡の地球」のAuthorだとiIndex=2。

*2:今回の例だと1回だけ実行されて「Mr.Children」を取得し、文字変数sz1に「桑田佳祐; Mr.Children」が入る。