iTunesで洋楽と邦楽を分けるWindows版

ほとんど使い回しですが・・


Windows版iTunesではCOMオブジェクトを使ってやるといいみたいです。
ほとんどドキュメントを読んでなくてサンプルスクリプトから使えそうなメソッドとか
適当に使って”動けばOK”ってスタンスで作りました。


動作検証もそんなにやってません。
基本的にはiTunesで洋楽と邦楽を分けるちょっと改良してみた
の動作と同じになってるはずです。


選択トラックに対して歌詞中のアルファベット率が65%以上だと”洋楽”と判定します。
事前に歌詞を取得していてください。

var iTunesApp = WScript.CreateObject("iTunes.Application");

var S_Tracks = iTunesApp.SelectedTracks;
var S_tracks_length = S_Tracks.Count;

for(i=1;i<=S_tracks_length;i++){
	var pre_comment = S_Tracks.Item(i).comment;
	if(!pre_comment.match(/\[English\]|\[Japanese\]/)){
		var track_name = S_Tracks.Item(i).name;
		var kashi = S_Tracks.Item(i).Lyrics;
		if(kashi.length == 0){
			WScript.Echo(track_name+"  歌詞がありません");
		}else{
			var moji = 0;
			var alphabet = kashi.match(/[\w']/ig);
//			WScript.Echo(track_name+" は "+kashi.length+" 文字中 "+alphabet.length);
			var par = (parseFloat(alphabet.length) / parseFloat(kashi.length)) * parseFloat(100);
			WScript.Echo(track_name+" は 洋楽度"+Math.round(par)+"%");
			if(Math.round(par) >= 65){
				S_Tracks.Item(i).comment = "[English]" + "\r\n" +pre_comment;
				WScript.Echo(track_name+"  を洋楽に設定");
			}else{
				S_Tracks.Item(i).comment = "[Japanese]" + "\r\n" +pre_comment;
				WScript.Echo(track_name+"  を邦楽に設定");
			}
		}
	}else{
		WScript.Echo(track_name+"  は分類済み");
	}
}

前回のエントリのつづき

iTunesのスクリプトメニューから実行したいってやつですが、
rbスクリプトを起動するためのAppleScriptを書いて入れても
Launcher.Appを使ってもスクリプトメニューからだとエラーが出てしまいます。


とりあえず、ターミナルにぶち込むスタイルで行きますorz


動作中のメッセージをテキストファイルとして出力してログをとったり
Growlに出力するのも考え中。