※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

便利なスクリプト

利用は自己責任で!
使い方が解らなければ絶対に手を出さない!


デッドリンク消去スクリプト

iTunesには登録されているが、元の音楽ファイルが削除などで
無くなっているリンクを消すスクリプト。

1. スクリプトをダウンロードし、解凍する。
デッドリンク消去スクリプト

2. スタートメニューにでも放り込んでexe同様に使う。
iTunes立ち上げる必要なし


再生回数変更スクリプト

iTunesで再生回数を変更したい曲を選択して、下記のスクリプトを実行させると、再生回数の変更ができる。

  • 下記のスクリプトをテキストエディタやメモ帳などにコピペ
  • 15行目「(current.Name, "新しい再生回数の設定", k)」の「k」を変更したい再生回数に書き換える(半角数字で記入)
  • 拡張子をtxtからvbsに変更して、countedit.vbsとでも名前をつけて保存
  • あとはダブルクリックして実行
  (一曲ごとに変更確認のダイアログボックスが出るので、OKボタンを押していく)

Dim iTunesApp
Dim Tracks, numTracks
Dim i, k
Dim current

set iTunesApp = WScript.CreateObject("iTunes.Application")
set iShell = CreateObject("Wscript.Shell")
iShell.AppActivate("iTunes")
set Tracks = iTunesApp.SelectedTracks
numTracks = Tracks.Count
Cnt

Sub Cnt
for i = 1 to numTracks
set current = Tracks.Item(i)
k = current.PlayedCount
k = InputBox(current.Name, "新しい再生回数の設定", k)
if k="" then Exit Sub
current.PlayedCount = k
next
End Sub



スキップした曲を抽出するスクリプト

iTunesで再生をスキップした曲を抽出するスクリプト

  • 2行目の「シャッフル時にスキップなリスト」に抽出した記入する
  • テキストエディタなどにコピペ
  • 拡張子をtxtからvbsに変更して、skipshuffle.vbsとでも名前をつけて保存
  • あとはダブルクリックして実行

On Error Resume Next

set iTunesApp = WScript.CreateObject("iTunes.Application")
pListName = "シャッフル時にスキップなリスト"
set pList = iTunesApp.LibrarySource.Playlists.ItemByName(pListName)
if pList.Count <> 0 then
pList.Delete()
end if

set pList = iTunesApp.CreatePlayList(pListName)
set Tracks = iTunesApp.LibraryPlaylist.Tracks
numTracks = Tracks.Count

for i = 1 to numTracks
if Tracks.Item(i).ExcludeFromShuffle  = true then
pList.AddTrack(Tracks.Item(i))
end if
next
WScript.Echo "Job complete."

プレイリスト作って、条件満たす曲を抽出なら、for文の中のifを書き換えるだけで、いろいろできるはず。アートワークがある曲だけとか、歌詞が入ってる曲とか。

テレビ番組・ミュージックビデオ変換スクリプト

iTunesのビデオをテレビ番組・ミュージックビデオに変換するスクリプト

  • Windowsのvbs版での、選択した曲をテレビ番組やミュージックビデオに一括変換するプログラム。
  • 動かし方は、下のリストをメモ帳にコピーして、デスクトップにconvert.vbsとでもセーブしておき、iTunesで曲を選択してから、vbsファイルを起動する。

set iTunesApp = WScript.CreateObject("iTunes.Application")
Set iShell = CreateObject("Wscript.Shell")
iShell.AppActivate("iTunes")
set Tracks = iTunesApp.SelectedTracks
numTracks = Tracks.Count

if numTracks = 0 then
  WScript.Echo"選択ファイルがありません。終了します"	
else
  set current = Tracks.Item(1)
  if current.VideoKind = 1 then
    inString = InputBox("テレビ番組変換します。番組名未変更の時は'-'を、スキップする場合にはEnterを押してください","テレビ番組名")
    if inString = "" then
      inString = InputBox("ミュージックビデオ変換します。アーティスト名未変更の時は'-'を、終了する場合にはEnterを押してください","アーティスト名")
      if inString <> "" then
        for i = 1 to numTracks
          set current = Tracks.Item(numTracks - i + 1)
          current.SeasonNumber = SeasonNum
          if inString <> "-" then					
            current.Artist = inString
          end if
          current.Compilation = 0
          current.RememberBookmark = 0
          current.VideoKind = 2
        next
        WScript.Echo "ミュージックビデオに変換しました"
      end if		
    else
      inSeason = InputBox("シーズン番号を指定します。番号未変更の時は'-'を、0を指定する場合にはEnterを押してください""シーズン番号")
      if inSeason = "" then
        SeasonNum = 0
      elseif inSeason = "-" then
        SeasonNum = -1
      else
        SeasonNum = CInt(inSeason)
      end if
      for i = 1 to numTracks
        set current = Tracks.Item(numTracks - i + 1)
        if SeasonNum <> -1 then
          current.SeasonNumber = SeasonNum
        end if
        if inString <> "-" then					
          current.Show = inString
        end if
        current.RememberBookmark = 0
        current.VideoKind = 3
      next
      WScript.Echo "テレビ番組に変換しました"
    end if
  else
    for i = 1 to numTracks
      set current = Tracks.Item(numTracks - i + 1)
      current.Show = ""
      current.VideoKind = 1
    next
    WScript.Echo "ムービーに復帰しました"
  end if
end if

Web版からミュージックビデオを追加対応。ミュージックビデオにしたい人は、最初の文字列入力でEnterだけを押し、次の文字列入力でアルバム名を入れればOK。


複数のプレイリストを順番にまとめるスクリプト


  • Windowsのvbs版での、複数のプレイリストを順番にまとめるプログラム。
  • 動かし方は、下のリストをメモ帳にコピーしてから、ソース上のpPlayList()に読み取り側、pOutPlayListに書き込み側のプレイリスト名を入れて、デスクトップにAppendPlaylist.vbsとでもセーブしておき、vbsファイルを起動すると、自動的にプレイリストを作り直して、そこに指定した曲全部詰め込む。

on error resume next

set iTunesApp = WScript.CreateObject("iTunes.Application")
dim pPlayList(4)
pPlayList(1)="トップ 25 曲"
pPlayList(2)="今日買った曲"
pPlayList(3)="一週間以内に追加した曲"
pPlayList(4)="未評価曲"
pOutPlayList = "ShufflePlayList"
set pOutList = iTunesApp.LibrarySource.Playlists.ItemByName(pOutPlayList)
if pOutList.Tracks.Count <> 0 then
pOutList.Delete()
end if

set pOutList = iTunesApp.CreatePlayList(pOutPlayList)

for i = 1 to 4
set pInputList = iTunesApp.LibrarySource.Playlists.ItemByName(pPlayList(i))
for each Track in pInputList.Tracks
pOutList.AddTrack(Track)
next
next

WScript.Echo "Job complete."

iTunesに勝手に日本語に書き換えられてしまったジャンルを英語に戻すスクリプト


iTunes7.6 以降で、再生やプロパティ参照で勝手に日本語に書き換わってしまった曲のジャンルを全て英語に戻すスクリプト。

  • テキストエディタなどにコピペ
  • 拡張子をtxtからjsに変更して、regenre.js とでも名前をつけて保存
  • あとはダブルクリックして実行

// iTunes7、8で
// 日本語に書き換えられてしまったジャンルたちを英語に戻す
// by ka-ku

var WshShell = WScript.CreateObject("WScript.Shell");

WshShell.Popup("日本語に変えられたジャンルたちを英語に戻します\n少々お待ちください",3);

// 日本語ジャンル⇒英語ジャンル対応テーブル初期化
var genreHash = new Object();

genreHash["ブルース"] = "Blues";
genreHash["クラシックロック"] = "Classic Rock";
genreHash["カントリー"] = "Country";
genreHash["ダンス"] = "Dance";
genreHash["ディスコ"] = "Disco";
genreHash["ファンク"] = "Funk";
genreHash["グランジ"] = "Grunge";
genreHash["ヒップホップ"] = "Hip-Hop";
genreHash["ジャズ"] = "Jazz";
genreHash["メタル"] = "Metal";
genreHash["ニューエイジ"] = "New Age";
genreHash["オールディーズ"] = "Oldies";
genreHash["その他"] = "Other";
genreHash["ポップ"] = "Pop";
genreHash["R&B"] = "R&B";
genreHash["ラップ"] = "Rap";
genreHash["レゲエ"] = "Reggae";
genreHash["ロック"] = "Rock";
genreHash["テクノ"] = "Techno";
genreHash["インダストリアル"] = "Industrial";
genreHash["オルタナティプ"] = "Alternative";
genreHash["スカ"] = "Ska";
genreHash["デスメタル"] = "Death Metal";
genreHash["プランク"] = "Pranks";
genreHash["サウンドトラック"] = "Soundtrack";
genreHash["ユーロテクノ"] = "Euro-Techno";
genreHash["アンビエント"] = "Ambient";
genreHash["トリップホップ"] = "Trip-Hop";
genreHash["ボーカル"] = "Vocal";
genreHash["ジャズ+ファンク"] = "Jazz+Funk";
genreHash["フュージョン"] = "Fusion";
genreHash["トランス"] = "Trance";
genreHash["クラシック"] = "Classical";
genreHash["インストゥルメンタル"] = "Instrumental";
genreHash["アシッド"] = "Acid";
genreHash["ハウス"] = "House";
genreHash["ゲーム"] = "Game";
genreHash["サウンドクリップ"] = "Sound Clip";
genreHash["ゴスペル"] = "Gospel";
genreHash["ノイズ"] = "Noise";
genreHash["オルターナティブロック"] = "AlternRock";
genreHash["ベース"] = "Bass";
genreHash["ソウル"] = "Soul";
genreHash["パンク"] = "Punk";
genreHash["スペース"] = "Space";
genreHash["メディテーティブ"] = "Meditative";
genreHash["インストゥルメンタルポップ"] = "Instrumental Pop";
genreHash["インストゥルメンタルロック"] = "Instrumental Rock";
genreHash["エスニック"] = "Ethnic";
genreHash["ゴシック"] = "Gothic";
genreHash["ダークウェーブ"] = "Darkwave";
genreHash["テクノ - インダストリアル"] = "Techno-Industrial";
genreHash["エレクトロニック"] = "Electronic";
genreHash["ポップ - フォーク"] = "Pop-Folk";
genreHash["ユーロダンス"] = "Eurodance";
genreHash["ドリーム"] = "Dream";
genreHash["サザンロック"] = "Southern Rock";
genreHash["コメディ"] = "Comedy";
genreHash["カルト"] = "Cult";
genreHash["ギャングスター"] = "Gangsta";
genreHash["トップ 40"] = "Top 40";
genreHash["クリスチャンラップ"] = "Christian Rap";
genreHash["ポップ/ファンク"] = "Pop/Funk";
genreHash["ジャングル"] = "Jungle";
genreHash["ネイティブアメリカン"] = "Native American";
genreHash["キャバレー"] = "Cabaret";
genreHash["ニューウェーブ"] = "New Wave";
genreHash["サイケデリック"] = "Psychedelic";
genreHash["レイブ"] = "Rave";
genreHash["ショートーン"] = "Showtunes";
genreHash["トレーラー"] = "Trailer";
genreHash["ローファイ"] = "Lo-Fi";
genreHash["トライバル"] = "Tribal";
genreHash["アシッドパンク"] = "Acid Punk";
genreHash["アシッドジャズ"] = "Acid Jazz";
genreHash["ポルカ"] = "Polka";
genreHash["レトロ"] = "Retro";
genreHash["ミュージカル"] = "Musical";
genreHash["ロックンロール"] = "Rock & Roll";
genreHash["ハードロック"] = "Hard Rock";
genreHash["フォーク"] = "Folk";
genreHash["フォークロック"] = "Folk-Rock";
genreHash["ナショナルフォーク"] = "National Folk";
genreHash["スウィング"] = "Swing";
genreHash["ファストフュージョン"] = "Fast Fusion";
genreHash["ビーボップ"] = "Bebop";
genreHash["ラテン"] = "Latin";
genreHash["リバイバル"] = "Revival";
genreHash["ケルティック"] = "Celtic";
genreHash["ブルーグラス"] = "Bluegrass";
genreHash["アバンギャルド"] = "Avantgarde";
genreHash["ゴシックロック"] = "Gothic Rock";
genreHash["プログレッシブロック"] = "Progressive Rock";
genreHash["サイケデリックロック"] = "Psychedelic Rock";
genreHash["シンフォニックロック"] = "Symphonic Rock";
genreHash["スローロック"] = "Slow Rock";
genreHash["ビッグバンド"] = "Big Band";
genreHash["コーラス"] = "Chorus";
genreHash["イージーリスニング"] = "Easy Listening";
genreHash["アコースティック"] = "Acoustic";
genreHash["ユーモア"] = "Humor";
genreHash["スピーチ"] = "Speech";
genreHash["シャンソン"] = "Chanson";
genreHash["オペラ"] = "Opera";
genreHash["室内音楽"] = "Chamber Music";
genreHash["ソナタ"] = "Sonata";
genreHash["交響曲"] = "Symphony";
genreHash["ブーティーベース"] = "Booty Bass";
genreHash["プライマス"] = "Primus";
genreHash["ポーングルーブ"] = "Porn Groove";
genreHash["サタイア"] = "Satire";
genreHash["スロージャム"] = "Slow Jam";
genreHash["クラブ"] = "Club";
genreHash["タンゴ"] = "Tango";
genreHash["サンバ"] = "Samba";
genreHash["フォークロア"] = "Folklore";
genreHash["バラード"] = "Ballad";
genreHash["パワーバラード"] = "Power Ballad";
genreHash["リズミックソウル"] = "Rhythmic Soul";
genreHash["フリースタイル"] = "Freestyle";
genreHash["デュエット"] = "Duet";
genreHash["パンクロック"] = "Punk Rock";
genreHash["ドラムソロ"] = "Drum Solo";
genreHash["アカペラ"] = "A Capella";
genreHash["ユーロハウス"] = "Euro-House";
genreHash["ダンスホール"] = "Dance Hall";
genreHash["オルタナティプ"] = "Alternative";
genreHash["ブック&スポークン"] = "Books & Spoken";
genreHash["ブルース/R&B"] = "Blues/R&B";
genreHash["チルドレン・ミュージック"] = "Children’s Music";
genreHash["クラシック"] = "Classical";
genreHash["カントリー"] = "Country";
genreHash["ダンス"] = "Dance";
genreHash["イージーリスニング"] = "Easy Listening";
genreHash["エレクトロニック"] = "Electronic";
genreHash["フォーク"] = "Folk";
genreHash["ハウス"] = "House";
genreHash["インダストリアル"] = "Industrial";
genreHash["テクノ"] = "Techno";
genreHash["トランス"] = "Trance";
genreHash["ヒップホップ/ラップ"] = "Hip Hop/Rap";
genreHash["ホリデーミュージック"] = "Holiday";
genreHash["ジャズ"] = "Jazz";
genreHash["ニューエイジ"] = "New Age";
genreHash["ポップ"] = "Pop";
genreHash["宗教音楽"] = "Religious";
genreHash["ロック"] = "Rock";
genreHash["サウンドトラック"] = "Soundtrack";
genreHash["無分類"] = "Unclassifiable";
genreHash["ワールド"] = "World";
genreHash["未定義"] = "Undefined";
genreHash["アダルトコンテンポラリー"] = "Adult Contemporary";
genreHash["オルタナティプロック"] = "Alternative Rock";
genreHash["チルドレン・ミュージック"] = "Children’s Music";
genreHash["クラシック"] = "Classical";
genreHash["コンテポラリー・クリスチャン"] = "Contemporary Christian";
genreHash["カントリー"] = "Country";
genreHash["ダンス"] = "Dance";
genreHash["イージーリスニング"] = "Easy Listening";
genreHash["エロティック"] = "Erotic";
genreHash["フォーク"] = "Folk";
genreHash["ゴスペル"] = "Gospel";
genreHash["ヒップホップ"] = "Hip Hop";
genreHash["ジャズ"] = "Jazz";
genreHash["ラテン"] = "Latin";
genreHash["ミュージカル"] = "Musical";
genreHash["ニューエイジ"] = "New Age";
genreHash["オペラ"] = "Opera";
genreHash["オペレッタ"] = "Operetta";
genreHash["ポップミュージック"] = "Pop Music";
genreHash["ラップ"] = "RAP";
genreHash["レゲエ"] = "Reggae";
genreHash["ロックミュージック"] = "Rock Music";
genreHash["リズム&ブルース"] = "Rhythm & Blues";
genreHash["サウンドエフェクト"] = "Sound Effects";
genreHash["サウンドトラック"] = "Sound Track";
genreHash["スポークンワード"] = "Spoken Word";
genreHash["ワールドミュージック"] = "World Music";

try {
	var iTunes = WScript.CreateObject("iTunes.Application");

}catch(e){
	WshShell.Popup(e.message+"\niTunesのオープンに失敗しました");
	WScript.Quit(1);
}

var changeCount = 0;

// ライブラリの全曲をなめて日本語ジャンルの魔法を解く
var tracks = iTunes.LibraryPlayList.Tracks;
var numTracks = tracks.Count;
for(var i = 1; i <= numTracks; i++){
	var curTrack = tracks.Item(i);
	var curGenre = curTrack.Genre;
	var goodGenre = genreHash[curGenre];
	if(goodGenre != undefined){			// 該当ジャンル発見!
		changeCount++;
		curTrack.Genre = "aaa";		// ダミー書き換え
		curTrack.Genre = goodGenre;		// 本ちゃん書き換え
	// 	WScript.Echo(curTrack.Name+" "+curGenre+"->"+goodGenre);
	}
}

if(changeCount > 0){
	WshShell.Popup(changeCount + "曲修正しました");
}else{
	WshShell.Popup("修正が必要な曲はありませんでした");
}


iTunesでジャンルを勝手に日本語に書き換えられないようにするスクリプト


iTunes7.6(およびそれ以上?)でジャンルを勝手に日本語に書き換えられないようにするスクリプト。日本語リソースファイルのジャンル部分だけを英語に置き換える。

  • テキストエディタなどにコピペ
  • 拡張子をtxtからjsに変更して、engenre.js とでも名前をつけて保存
  • あとはダブルクリックして実行

注)もし「c:\.. \Localizable.strings がみつかりません」とエラーが出た場合は iTunes がインストールされている場所が C:\Program Files\iTunes じゃないので、どこにインストールされているか探して、ソースコードの resourceDir のディレクトリ名を書き換えて再度実行のこと。

// iTunes7.6で
// 言語リソースファイルの日本語のジャンルを英語に置換する
// by ka-ku

var WshShell = WScript.CreateObject("WScript.Shell");

// resourceDir: 日本語のリソースファイルがあるフォルダ(自分の環境に合わせて書き換える)
var resourceDir = "C:\\Program Files\\iTunes\\iTunes.Resources\\ja.lproj";

// resourceFile: リソースファイル名
var resourceFile = "Localizable.strings";

var resourcePath = resourceDir + "\\" + resourceFile;
var backupPath = resourcePath+".org";		// バックアップファイル名には ".org" をつける

var convHash = new Object();
initConvHash();


var fso = new ActiveXObject("Scripting.FileSystemObject");
if (! fso.FileExists(resourcePath)){
	WshShell.Popup(resourcePath+" がみつかりません");
}else{
	try{
		WshShell.Popup(resourcePath+"\nの日本語ジャンルを英語に書き換えます");
		fso.CopyFile( resourcePath, backupPath, true);
		var iStream = fso.OpenTextFile(backupPath,1,false,-1); // read,noOverwrite, unicode
		var oStream = fso.CreateTextFile(resourcePath, true,true); // overwrite, unicode

		while(! iStream.AtEndOfStream){
			var line =  iStream.ReadLine();
			if(line.match(/^"92/)){	// "92 で始まる行が置換対象
				line = convLine(line);
			}
			oStream.Write(line+"\n");
		}

		oStream.Close();
		iStream.Close();
		WshShell.Popup("終了しました");
	}catch(err){
		WshShell.Popup("エラー:" + err.message);
	}
}

// 置換対象行を置換
function convLine(line){
	var id = line.substring(1,9);	// 92XX.XXX を ID として切り出す
	var engGenre = convHash[id];
	if(! engGenre){
		return line;	// english genre is not found !
	}
	
	return "\"" + id + "\" = \"" + engGenre + "\";";
}

// 変換用ハッシュの初期化
function initConvHash(){
	convHash["9200.001"] = "Blues";
	convHash["9200.002"] = "Classic Rock";
	convHash["9200.003"] = "Country";
	convHash["9200.004"] = "Dance";
	convHash["9200.005"] = "Disco";
	convHash["9200.006"] = "Funk";
	convHash["9200.007"] = "Grunge";
	convHash["9200.008"] = "Hip-Hop";
	convHash["9200.009"] = "Jazz";
	convHash["9200.010"] = "Metal";
	convHash["9200.011"] = "New Age";
	convHash["9200.012"] = "Oldies";
	convHash["9200.013"] = "Other";
	convHash["9200.014"] = "Pop";
	convHash["9200.015"] = "R&B";
	convHash["9200.016"] = "Rap";
	convHash["9200.017"] = "Reggae";
	convHash["9200.018"] = "Rock";
	convHash["9200.019"] = "Techno";
	convHash["9200.020"] = "Industrial";
	convHash["9200.021"] = "Alternative";
	convHash["9200.022"] = "Ska";
	convHash["9200.023"] = "Death Metal";
	convHash["9200.024"] = "Pranks";
	convHash["9200.025"] = "Soundtrack";
	convHash["9200.026"] = "Euro-Techno";
	convHash["9200.027"] = "Ambient";
	convHash["9200.028"] = "Trip-Hop";
	convHash["9200.029"] = "Vocal";
	convHash["9200.030"] = "Jazz+Funk";
	convHash["9200.031"] = "Fusion";
	convHash["9200.032"] = "Trance";
	convHash["9200.033"] = "Classical";
	convHash["9200.034"] = "Instrumental";
	convHash["9200.035"] = "Acid";
	convHash["9200.036"] = "House";
	convHash["9200.037"] = "Game";
	convHash["9200.038"] = "Sound Clip";
	convHash["9200.039"] = "Gospel";
	convHash["9200.040"] = "Noise";
	convHash["9200.041"] = "AlternRock";
	convHash["9200.042"] = "Bass";
	convHash["9200.043"] = "Soul";
	convHash["9200.044"] = "Punk";
	convHash["9200.045"] = "Space";
	convHash["9200.046"] = "Meditative";
	convHash["9200.047"] = "Instrumental Pop";
	convHash["9200.048"] = "Instrumental Rock";
	convHash["9200.049"] = "Ethnic";
	convHash["9200.050"] = "Gothic";
	convHash["9200.051"] = "Darkwave";
	convHash["9200.052"] = "Techno-Industrial";
	convHash["9200.053"] = "Electronic";
	convHash["9200.054"] = "Pop-Folk";
	convHash["9200.055"] = "Eurodance";
	convHash["9200.056"] = "Dream";
	convHash["9200.057"] = "Southern Rock";
	convHash["9200.058"] = "Comedy";
	convHash["9200.059"] = "Cult";
	convHash["9200.060"] = "Gangsta";
	convHash["9200.061"] = "Top 40";
	convHash["9200.062"] = "Christian Rap";
	convHash["9200.063"] = "Pop/Funk";
	convHash["9200.064"] = "Jungle";
	convHash["9200.065"] = "Native American";
	convHash["9200.066"] = "Cabaret";
	convHash["9200.067"] = "New Wave";
	convHash["9200.068"] = "Psychedelic";
	convHash["9200.069"] = "Rave";
	convHash["9200.070"] = "Showtunes";
	convHash["9200.071"] = "Trailer";
	convHash["9200.072"] = "Lo-Fi";
	convHash["9200.073"] = "Tribal";
	convHash["9200.074"] = "Acid Punk";
	convHash["9200.075"] = "Acid Jazz";
	convHash["9200.076"] = "Polka";
	convHash["9200.077"] = "Retro";
	convHash["9200.078"] = "Musical";
	convHash["9200.079"] = "Rock & Roll";
	convHash["9200.080"] = "Hard Rock";
	convHash["9200.081"] = "Folk";
	convHash["9200.082"] = "Folk-Rock";
	convHash["9200.083"] = "National Folk";
	convHash["9200.084"] = "Swing";
	convHash["9200.085"] = "Fast Fusion";
	convHash["9200.086"] = "Bebop";
	convHash["9200.087"] = "Latin";
	convHash["9200.088"] = "Revival";
	convHash["9200.089"] = "Celtic";
	convHash["9200.090"] = "Bluegrass";
	convHash["9200.091"] = "Avantgarde";
	convHash["9200.092"] = "Gothic Rock";
	convHash["9200.093"] = "Progressive Rock";
	convHash["9200.094"] = "Psychedelic Rock";
	convHash["9200.095"] = "Symphonic Rock";
	convHash["9200.096"] = "Slow Rock";
	convHash["9200.097"] = "Big Band";
	convHash["9200.098"] = "Chorus";
	convHash["9200.099"] = "Easy Listening";
	convHash["9200.100"] = "Acoustic";
	convHash["9200.101"] = "Humor";
	convHash["9200.102"] = "Speech";
	convHash["9200.103"] = "Chanson";
	convHash["9200.104"] = "Opera";
	convHash["9200.105"] = "Chamber Music";
	convHash["9200.106"] = "Sonata";
	convHash["9200.107"] = "Symphony";
	convHash["9200.108"] = "Booty Bass";
	convHash["9200.109"] = "Primus";
	convHash["9200.110"] = "Porn Groove";
	convHash["9200.111"] = "Satire";
	convHash["9200.112"] = "Slow Jam";
	convHash["9200.113"] = "Club";
	convHash["9200.114"] = "Tango";
	convHash["9200.115"] = "Samba";
	convHash["9200.116"] = "Folklore";
	convHash["9200.117"] = "Ballad";
	convHash["9200.118"] = "Power Ballad";
	convHash["9200.119"] = "Rhythmic Soul";
	convHash["9200.120"] = "Freestyle";
	convHash["9200.121"] = "Duet";
	convHash["9200.122"] = "Punk Rock";
	convHash["9200.123"] = "Drum Solo";
	convHash["9200.124"] = "A Capella";
	convHash["9200.125"] = "Euro-House";
	convHash["9200.126"] = "Dance Hall";
	convHash["9201.001"] = "Alternative";
	convHash["9201.002"] = "Books & Spoken";
	convHash["9201.003"] = "Blues/R&B";
	convHash["9201.004"] = "Children’s Music";
	convHash["9201.005"] = "Classical";
	convHash["9201.006"] = "Country";
	convHash["9201.007"] = "Dance";
	convHash["9201.008"] = "Easy Listening";
	convHash["9201.009"] = "Electronic";
	convHash["9201.010"] = "Folk";
	convHash["9201.011"] = "House";
	convHash["9201.012"] = "Industrial";
	convHash["9201.013"] = "Techno";
	convHash["9201.014"] = "Trance";
	convHash["9201.015"] = "Hip Hop/Rap";
	convHash["9201.016"] = "Holiday";
	convHash["9201.017"] = "Jazz";
	convHash["9201.018"] = "New Age";
	convHash["9201.019"] = "Pop";
	convHash["9201.020"] = "Religious";
	convHash["9201.021"] = "Rock";
	convHash["9201.022"] = "Soundtrack";
	convHash["9201.023"] = "Unclassifiable";
	convHash["9201.024"] = "World";
	convHash["9202.001"] = "Undefined";
	convHash["9202.002"] = "Adult Contemporary";
	convHash["9202.003"] = "Alternative Rock";
	convHash["9202.004"] = "Children’s Music";
	convHash["9202.005"] = "Classical";
	convHash["9202.006"] = "Contemporary Christian";
	convHash["9202.007"] = "Country";
	convHash["9202.008"] = "Dance";
	convHash["9202.009"] = "Easy Listening";
	convHash["9202.010"] = "Erotic";
	convHash["9202.011"] = "Folk";
	convHash["9202.012"] = "Gospel";
	convHash["9202.013"] = "Hip Hop";
	convHash["9202.014"] = "Jazz";
	convHash["9202.015"] = "Latin";
	convHash["9202.016"] = "Musical";
	convHash["9202.017"] = "New Age";
	convHash["9202.018"] = "Opera";
	convHash["9202.019"] = "Operetta";
	convHash["9202.020"] = "Pop Music";
	convHash["9202.021"] = "RAP";
	convHash["9202.022"] = "Reggae";
	convHash["9202.023"] = "Rock Music";
	convHash["9202.024"] = "Rhythm & Blues";
	convHash["9202.025"] = "Sound Effects";
	convHash["9202.026"] = "Sound Track";
	convHash["9202.027"] = "Spoken Word";
	convHash["9202.028"] = "World Music";
}

アートワーク、歌詞識別スクリプト

iTunesでアートワーク、歌詞を付加した曲を識別するために、Group欄にARTWORK, LYRICSの文字をコンマ区切りで付加します。

  • 下記のスクリプトをテキストエディタやメモ帳などにコピペ
  • 拡張子をtxtからvbsに変更して、searchartwork.vbsとでも名前をつけて保存
  • iTunes上で曲を選択してから、スクリプトをダブルクリックして実行

注意:アートワーク,歌詞の削除には追従しませんので、そのときには一端Group欄の中身を手動で消去してください。

On Error Resume Next

set iTunesApp = WScript.CreateObject("iTunes.Application")
set iShell = CreateObject("Wscript.Shell")
iShell.AppActivate("iTunes")
set Tracks = iTunesApp.SelectedTracks
numTracks = Tracks.Count
dim curbpm, art, ly
dim curTrack, change
dim IndexKey
dim curDic
set curDic = WScript.CreateObject("Scripting.Dictionary")

if numTracks = 0 then
  WScript.Echo"選択ファイルがありません。終了します"
else
  for i = 0 to numTracks
    if i = 0 then pos = 1 else pos = i
    set curTrack = Tracks(numTracks - pos + 1 )
    call getGroups(curDic, curTrack.Grouping)
    change = 0
    if not (curDic.Exists("ARTWORK")) then
      if curTrack.Artwork.count <> 0 then
        change = 1
        curDic.Add "ARTWORK", 1
      end if
    end if
    if not (curDic.Exists("LYRICS")) then
      if len(curTrack.Lyrics) <> 0 then
        change = 1
        curDic.Add "LYRICS", 1
      end if
    end if
    if change = 1 then
      curTrack.Grouping = setGroups(curDic)
    end if
  next
end if
WScript.Echo "Job complete."

sub getGroups(objDic, Group)
  IndexKey = split(Group, ",", -1, vbTextCompare)
  objDic.RemoveAll
  for j = LBound(IndexKey) to UBound(IndexKey)
    objDic.Add IndexKey(j), 1
  next
end sub

function setGroups(objDic)
  dim rValue
  dim strArray

  strArray = objDic.Keys
  rValue = ""
  for i = 0 to objDic.Count - 1
    if i <> 0 then rValue = rValue & ","
    rValue = rValue & strArray(i)
  next
  setGroups = rValue
end function

再生回数、レーティング移行スクリプト


iTunesで新しくCD取り込み直したときなどに、再生回数とレーティングを新規曲にコピーします。

  • 下記のスクリプトをテキストエディタやメモ帳などにコピペ
  • 拡張子をtxtからvbsに変更して、copycount.vbsとでも名前をつけて保存
  • iTunes上で新旧両方の曲を選択してから、スクリプトをダブルクリックして実行

動作内容:アーティストやアルバム名を無視し、同一トラック番号の曲で再生回数の最大を求め、その値を同一トラック番号の曲に適応します。
このため、トラック番号がきちんとついていれば、アルバム全曲を一度に処理もできます。
逆に、トラック番号がついていなければ全部同じ数値に上書きされます。

set iTunesApp = WScript.CreateObject("iTunes.Application")
set iShell = CreateObject("Wscript.Shell")
iShell.AppActivate("iTunes")
set Tracks = iTunesApp.SelectedTracks
numTracks = Tracks.Count
dim PlayCount(100)
dim Rate(100)

if numTracks = 0 then
  WScript.Echo"選択ファイルがありません。終了します"	
else
  for i = 1 to numTracks
    set current = Tracks.Item(numTracks - i + 1)
    TNumber = current.TrackNumber
    if TNumber <> 0 then
      if PlayCount(TNumber) < current.PlayedCount then
        PlayCount(TNumber) = current.PlayedCount
      end if
      if Rate(TNumber) < current.Rating then
        Rate(TNumber) = current.Rating
      end if
    end if
  next

  for i = 1 to numTracks
    set current = Tracks.Item(numTracks - i + 1)
    TNumber = current.TrackNumber
    if TNumber <> 0 then
      current.PlayedCount = PlayCount(TNumber)
      current.Rating = Rate(TNumber)
    end if
  next
end if

WScript.Echo"End of Job"	

最大ディスク番号未記述抽出スクリプト


iTunesでディスク番号は記述したが、最大ディスク番号は記述していないという曲をプレイリストに抽出します。

  • 下記のスクリプトをテキストエディタやメモ帳などにコピペ
  • 拡張子をtxtからvbsに変更して、nodiscnum.vbsとでも名前をつけて保存
  • iTunes起動状態で、スクリプトをダブルクリックして実行

動作内容:ディスク番号は記述しているが、最大ディスク番号を書き込んでいない曲だけを、未ナンバー曲リストという名前のプレイリストに抽出します。このとき、同じ名前のプレイリストがあれば、中身を消してから使いますので気をつけてください。

なお、このコードの条件文を変更すると、いろいろな条件の曲の抽出に使えると思います。

On Error Resume Next

set iTunesApp = WScript.CreateObject("iTunes.Application")
pListName = "未ナンバー曲リスト"
set pList = iTunesApp.LibrarySource.Playlists.ItemByName(pListName)
if pList.Count <> 0 then
  pList.Delete()	
end if

set pList = iTunesApp.CreatePlayList(pListName)
for each Track in iTunesApp.LibraryPlayList.Tracks
  if Track.DiscCount = 0 and Track.DiscNumber <> 0 then
    pList.AddTrack(Track)
  end if
next
WScript.Echo "Job complete."

レーティングの☆消去スクリプト


iTunesが勝手につける☆☆☆を見かけ上消すスクリプトです。

  • 下記のスクリプトをテキストエディタやメモ帳などにコピペ
  • 拡張子をtxtからvbsに変更して、EraseRate.vbsとでも名前をつけて保存
  • iTunes起動状態で、曲を選択してから、スクリプトをダブルクリックして実行

動作内容:Rating値に1を設定しています。iTunes内部的にはレートは0-100の範囲で設定されており、★1つがRatingで20に相当します。Rating=0だとコンピュータが自動計算しますので、1を設定して、★がつかないが、自動計算はさせないという状態を作り出しています。

なお、このプログラムは起動後にウィンドウのフォーカスをiTunesに切り替えます。iTunes9のバグ回避のためですので、処理終了までそのままお待ちください。

set iTunesApp = WScript.CreateObject("iTunes.Application")
Set iShell = CreateObject("Wscript.Shell")
iShell.AppActivate("iTunes")
set Tracks = iTunesApp.SelectedTracks

BtnCode = iShell.popup("曲、アルバムどちらの☆を消しますか?曲(はい), アルバム(いいえ)", 0,"選択",3)
Select Case BtnCode
  Case 6
    for i = 1 to Tracks.Count
      Tracks.Item(i).Rating = 1
    next
  Case 7
    for i = 1 to Tracks.Count
      Tracks.Item(i).AlbumRating = 1
    next
End Select

WScript.Echo "Job complete."

スキップした曲のマイレートを半星づつ下げるスクリプト

iTunesで曲をスキップした記録を元にマイレートを半星づつ下げるというもの

  • 下記のスクリプトをテキストエディタやメモ帳などにコピペ
  • デスクトップにconvert.jsとでもセーブしてから
  • ダブルクリックするだけ。


var iTunesApp = WScript.CreateObject("iTunes.Application");
var Music = iTunesApp.LibraryPlaylist;
var tracks = Music.Tracks;
var numTracks = tracks.Count;
var i;

for(i = 1; i <= numTracks; i++)
{
var current = tracks.Item(i);
var skips = current.SkippedCount;
if(skips != 0)
{
var newrate = current.Rating - skips * 10;
current.Rating = newrate;
current.SkippedCount =0;
}
}
WScript.Echo("Job complete."); 



マイレートをexportしたりimportしたりするスクリプト

マイレート(★の数)が1つ以上のリストを抽出して、別のiTunesに反映させることができる。
別々のiTunesでマイレートを同期したい時にでも。
※1 曲数が膨大だと結構時間かかります
※2 重複している曲は、マイレートが★0なら同一化され、それ以外は入れ替わります。

:1. スクリプトをダウンロードして解凍する -> syncStar.zip
:2. コマンドプロンプトを開いて解凍したフォルダに移動
:3. 下記の使い方を参考にコマンド実行

使い方

  • エクスポート(マイレートのついているリストの抽出)
cscript syncStar.vbs export starList.txt

  • インポートされる前にテスト(事前に変更されるものが見れます)
cscript syncStar.vbs check starList.txt

  • インポート(トラック番号、曲名、アーティスト、アルバム名が完全に一致するもののマイレートが上書きされます)
cscript syncStar.vbs import starList.txt



CDが取り込めたかチェックするスクリプト

CDのトラックと、iTunesライブラリのファイルを調べ、一致するファイルの
演奏秒数を比較して、異なる場合にはエラーを出すプログラムです。

使い方

iTunes_CDCheck2.zip
をダウンロード、解凍して実行する。

その他

曲名の一致条件は、「アーティスト名」「アルバム名」「曲名」「トラック番号」が一致した場合に、同一秒数の曲が存在するかどうかです。例えば、同じ名前でMP3とAACがあった場合、MP3がOKでAACがNGというのは検知できませんし、曲名を変更した場合にも判定できません。なので、CD取り込み直後にスクリプト実行するのがお勧めです。

また、iTunesAPIの限界で、一致するかどうかの判定は秒数までです。msec単位で欠落している場合などは判定できない場合があります。

途中経過が寂しいという場合には、1行目を以下のように書き換えてください。
Verbose = 1


iTunesやiPodの曲一覧を出力するスクリプト

iTunesやiPodに転送した曲の一覧を、テキストに出力します。
iPodとiTunesのファイル内容を比較したいときなどにどうぞ。

使い方

iTunes_TextOut.zip
をダウンロード、解凍して実行する。

その他

曲の出力はアルバム名,曲名,時間,アーティスト名です。
iTunesとiPodの曲を比較したい場合には、このスクリプトで曲名を出力してから、sortコマンドでsortしておき、WinDiff等の比較プログラムで比較する方法がお勧めです。

出力先はVista/7でのパブリックフォルダ内にあるドキュメントフォルダですが、変更したいばあいには、1行目の
FilePath = "C:\Users\Public\Documents\"
の部分のパスを書き換えてください。