iTunesスクリプト あなたの曲、文字化けしてませんか?

iTunesで文字化けしてる曲はありませんか?

この画像のようにタイトルが文字化けしている曲はありませんか?文字化けってなかなか直らないんですよね。こんなときファイル名を頼りに曲名を修正してくれるスクリプトを書いてみました。ただしWindows版のiTunesでしか使えません。例えば上の画像のファイルパスは「I:\music video\くるり\くるり - 東京(Live).mp4」になっています。この場合、曲名を「くるり - 東京(Live)」に修正してくれます。

なおこのスクリプトは単にファイル名をとってきて曲名にするだけのスクリプトなので、文字化けしている曲だけでなく、曲名が適切につけられていない曲なんかにも使えます。

使いかた

プレイリストを作成して「変更するファイル」という名前にしてください。そして曲名を変更したい曲をこのプレイリストに入れてください。これで準備完了です。下記のスクリプトを実行しましょう。最後に何件の曲名を変更したのか表示されます。

スクリプトの実行方法

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("変更するファイル"); //対象となるプレイリストの名前

if (playlist) {//プレイリストが存在する場合
	var track;
	var count = 0;
	for(var i=1; i <=playlist.Tracks.Count ;i++){
		track = playlist.Tracks(i);		
		if(FilePath(track.Location)){
			//WScript.Echo(FilePath.FileNameShort);
			track.Name = FilePath.FileNameShort;
			count++;
		}
	}
	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;
}

その他

ファイルパスの文字列(c:\music\test.mp3)からファイル名(test)を取得する方法はファイルのフルパスからファイル名や拡張子を抽出する - 犬も歩けば棒も歩くを参考にしてください。