iTunesスクリプト ファイルのディレクトリを元にアルバム名をつける

あなたの曲のアルバム名は正しく設定されていますか?

iTunesで正しくアルバム名が設定されていない曲はありませんか?そこでこのスクリプトを使って正しいファイル名を設定しましょう。このスクリプトは、曲のファイルが保存されているディレクトリ名をアルバム名に設定します。例えば以下のようなファイルパスに保存されている曲があったとします。

I:\music\一期一会 Sweets for my SPITZ\01-スピカ.mp3

この場合、「一期一会 Sweets for my SPITZ」がアルバム名として設定されます。

使いかた

プレイリストを作成して「変更するファイル」という名前にしてください。そしてアルバム名を設定したい曲をこのプレイリストに入れてください。これで準備完了です。下記のスクリプトを実行しましょう。途中で一曲ずつ「~というアルバム名にしますか?」という確認画面がでます。ここでキャンセルした曲はアルバム名が変更されません。そして最後に何件のアルバム名を設定したのか表示されます。

スクリプトの実行方法

iTunesを起動する。下記のコードをテキストとして保存。拡張子を(.js)に変更する。変更できたらこのファイルをクリックして実行します。このとき Windows Based Script Hostというプログラムで実行されるはずです。もしテキストエディタで実行されるようであれば、ファイルを右クリックしてプログラムから開くで、 Windows Based Script Host(C:\Windows\System32\wscript.exe)で実行されるように関連付けてください。

スクリプト

/*
 * あるプレイリストに含まれる曲のアルバム名を、ファイルパスの親ディレクトリの名前から取得
 */
var iTunesApp = new ActiveXObject("iTunes.Application");
var playlist = iTunesApp.LibrarySource.Playlists.ItemByName("変更するファイル"); //対象となるプレイリストの名前
var shell = WScript.CreateObject("WScript.Shell");

if (playlist) {//プレイリストが存在する場合
	var track;
	var count = 0;
	for(var i=1; i <=playlist.Tracks.Count ;i++){
		track = playlist.Tracks(i);		
		if(FilePath(track.Location) && FilePath.ParentDir){
			
			ret = shell.Popup("曲名 : "+track.Name+"\nアーティスト : "+track.Artist+"\n\nこの曲のアルバム名を"+FilePath.ParentDir+"に変更しますか?", -1, "", 1);
			switch(ret){
			    case 1: 
			    	track.Album = FilePath.ParentDir;
			    	count++;
			    	break;
			    case 2:
			    	break;
			}
			
		}
	}
	WScript.Echo(count + "件変更しました。");
}

/**
 * ファイルのパスを引数として渡すと適当に分解してくれます
 */
function FilePath(str){
	var pattern = /(?:(\w+):|\\)(?:\\([^\\:\*?\"<>\|]+))*(?:\\(([^:\\\*?\"<>\|]+)\.+([^:\\\*?\"<>\|]+)$))/;
	
	FilePath.result = str.match(pattern);
	if(FilePath.result){
		FilePath.FullPath = FilePath.result[0];//フルパス
		FilePath.Drive = FilePath.result[1];//ドライブ
		FilePath.ParentDir = FilePath.result[2];//親のディレクトリ
		FilePath.FileName = FilePath.result[3];//ファイル名
		FilePath.FileNameShort = FilePath.result[4];//拡張子を除いたファイル名
		FilePath.FileExt = FilePath.result[5];//拡張子
		
		return true;
	}

	return false;
}

その他

確認画面にはWScript.ShellのPopupというメソッドを利用しています。このPopupメソッドについてはmsdnのドキュメントを参考にしてください。