iTunesで曲名の列挙

ちょっとメモ。

iTunesに登録した動画・音楽の一覧をプログラムかスクリプトから取得したくて・・・。
はじめに思いついたのは「ライブラリのエクスポート」で得られるXMLファイルから取得する方法。
これは単純にXMLをパースするだけなんで、C# (.NET Framework)で使えるようにラップするクラスを作った。
これを使って、下記のようなコードで曲名を列挙できた。・・・が、

/*
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Linq;
using System.Xml.Linq;
*/

public static void Main(string [] args)
{
  if(args.Length <= 0)
    {
      Console.WriteLine("XMLファイルを指定してください。");
      return;
    }

  string xmlfile = args[0];

  var albums = new Dictionary<string,Album>();

  var xDict = new XDict(xmlfile,"/dict");
  var Tracks = xDict["Tracks"] as XDict;

  foreach(var key in Tracks.Keys)
    {
      var xDictTrack = Tracks[key] as XDict;
      
      //アルバム名がない場合、アーティスト名で作成する。
      if(xDictTrack["Album"] == null)
        xDictTrack["Album"] = xDictTrack["Artist"] ?? "No Album";
      
      var tune = new Tune(xDictTrack);
      
      if(albums.ContainsKey(tune.Album))
        albums[tune.Album].Tunes.Add(tune);
      else
        albums[tune.Album] = new Album(tune);
    }

  foreach(var album in albums.Values)
    {
      Console.WriteLine("---{0}-",album.Name);
      album.Sort(SortBy.Track);
      album.Tunes.ForEach((tune) => Console.WriteLine("{0:D2}:{1}",tune.Track,tune.Name));
    }
}

これを書いてたとき、たまたまGoogleで検索してたら、iTunesアプリケーション自体がCOMオートメーションサーバーを実装していてドキュメントが公開されているのを今更発見しました(笑) なんだ、スクリプトから簡単に曲名からプレイリストの編集までできるんじゃないですか!(^^;;
さっそく https://developer.apple.com/downloads/ で無料のデベロッパー登録?して “iTunes COM for Windows SDK”をダウンロードしドキュメントをゲット。

/*
 wscriptで動かすと延々メッセージボックスがポップアップするので注意。
*/
var	iTunes = WScript.CreateObject("iTunes.Application");
var	tracks = iTunes.LibraryPlaylist.Tracks;
var	num = tracks.Count;
for(var i = 1;i <= num;i++)
 WScript.Echo(tracks.Item(i).Name);

簡単!

最初のXMLから取得する方法は無駄になった・・・けど、C#でXMLを操作する勉強をしたと思えば・・・ま、いいか(^^;