1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows PowershellでiTunesの全角と半角を統一する

Posted at

iTunesで音楽ファイルを管理していると「全角と半角を統一したい」という気持ちになりませんか?自分はなります。なのでWindows PowershellでiTunesの曲の全角と半角を統一するようにしています。その方法を共有します。

参考は以下の記事
https://qiita.com/Fushihara/items/612594263f9bb7012ad6

この記事は曲情報を取得するコードですが、これをもとに曲名などを置換するコードを書きました。


# 変数

$iTunes = New-Object -Com "iTunes.Application"

$iTunesText = ""
$StartTime = Get-Date
$RoopCounter = 0

# タグ名
# $_.Name 曲名
# $_.Genre ジャンル
# $_.SampleRate サンプルレート
# $_.Size サイズ
# $_.Year 年度
# $_.Artwork アートワーク
# $_.Podcast ポッドキャスト
# $_.Album アルバム名
# $_.Artist アーティスト名
# $_.SortAlbum アルバム名(ソート)
# $_.SortArtist アーティスト名(ソート)
# $_.SortName 曲名(ソート)
# $_.Comment コメント

# 関数定義

# 全角文字を半角に変換
function replaceEmEn($iTunesText){

	if ($iTunesText -cne $null){
	
		$iTunesText = $iTunesText.Replace("A" , "A_半角" ) 
		$iTunesText = $iTunesText.Replace("B" , "B_半角" ) 
		$iTunesText = $iTunesText.Replace("C" , "C_半角" ) 
		$iTunesText = $iTunesText.Replace("D" , "D_半角" ) 
		$iTunesText = $iTunesText.Replace("E" , "E_半角" ) 
		$iTunesText = $iTunesText.Replace("F" , "F_半角" ) 
		$iTunesText = $iTunesText.Replace("G" , "G_半角" ) 
		$iTunesText = $iTunesText.Replace("H" , "H_半角" ) 
		$iTunesText = $iTunesText.Replace("I" , "I_半角" ) 
		$iTunesText = $iTunesText.Replace("J" , "J_半角" ) 
		$iTunesText = $iTunesText.Replace("K" , "K_半角" ) 
		$iTunesText = $iTunesText.Replace("L" , "L_半角" ) 
		$iTunesText = $iTunesText.Replace("M" , "M_半角" ) 
		$iTunesText = $iTunesText.Replace("N" , "N_半角" ) 
		$iTunesText = $iTunesText.Replace("O" , "O_半角" ) 
		$iTunesText = $iTunesText.Replace("P" , "P_半角" ) 
		$iTunesText = $iTunesText.Replace("Q" , "Q_半角" ) 
		$iTunesText = $iTunesText.Replace("R" , "R_半角" ) 
		$iTunesText = $iTunesText.Replace("S" , "S_半角" ) 
		$iTunesText = $iTunesText.Replace("T" , "T_半角" ) 
		$iTunesText = $iTunesText.Replace("U" , "U_半角" ) 
		$iTunesText = $iTunesText.Replace("V" , "V_半角" ) 
		$iTunesText = $iTunesText.Replace("W" , "W_半角" ) 
		$iTunesText = $iTunesText.Replace("X" , "X_半角" ) 
		$iTunesText = $iTunesText.Replace("Y" , "Y_半角" ) 
		$iTunesText = $iTunesText.Replace("Z" , "Z_半角" ) 
		$iTunesText = $iTunesText.Replace("a" , "a_半角" ) 
		$iTunesText = $iTunesText.Replace("b" , "b_半角" ) 
		$iTunesText = $iTunesText.Replace("c" , "c_半角" ) 
		$iTunesText = $iTunesText.Replace("d" , "d_半角" ) 
		$iTunesText = $iTunesText.Replace("e" , "e_半角" ) 
		$iTunesText = $iTunesText.Replace("f" , "f_半角" ) 
		$iTunesText = $iTunesText.Replace("g" , "g_半角" ) 
		$iTunesText = $iTunesText.Replace("h" , "h_半角" ) 
		$iTunesText = $iTunesText.Replace("i" , "i_半角" ) 
		$iTunesText = $iTunesText.Replace("j" , "j_半角" ) 
		$iTunesText = $iTunesText.Replace("k" , "k_半角" ) 
		$iTunesText = $iTunesText.Replace("l" , "l_半角" ) 
		$iTunesText = $iTunesText.Replace("m" , "m_半角" ) 
		$iTunesText = $iTunesText.Replace("n" , "n_半角" ) 
		$iTunesText = $iTunesText.Replace("o" , "o_半角" ) 
		$iTunesText = $iTunesText.Replace("p" , "p_半角" ) 
		$iTunesText = $iTunesText.Replace("q" , "q_半角" ) 
		$iTunesText = $iTunesText.Replace("r" , "r_半角" ) 
		$iTunesText = $iTunesText.Replace("s" , "s_半角" ) 
		$iTunesText = $iTunesText.Replace("t" , "t_半角" ) 
		$iTunesText = $iTunesText.Replace("u" , "u_半角" ) 
		$iTunesText = $iTunesText.Replace("v" , "v_半角" ) 
		$iTunesText = $iTunesText.Replace("w" , "w_半角" ) 
		$iTunesText = $iTunesText.Replace("x" , "x_半角" ) 
		$iTunesText = $iTunesText.Replace("y" , "y_半角" ) 
		$iTunesText = $iTunesText.Replace("z" , "z_半角" ) 
		$iTunesText = $iTunesText.Replace("1" , "1_半角" ) 
		$iTunesText = $iTunesText.Replace("2" , "2_半角" ) 
		$iTunesText = $iTunesText.Replace("3" , "3_半角" ) 
		$iTunesText = $iTunesText.Replace("4" , "4_半角" ) 
		$iTunesText = $iTunesText.Replace("5" , "5_半角" ) 
		$iTunesText = $iTunesText.Replace("6" , "6_半角" ) 
		$iTunesText = $iTunesText.Replace("7" , "7_半角" ) 
		$iTunesText = $iTunesText.Replace("8" , "8_半角" ) 
		$iTunesText = $iTunesText.Replace("9" , "9_半角" ) 
		$iTunesText = $iTunesText.Replace("0" , "0_半角" ) 
		$iTunesText = $iTunesText.Replace("(" , "(_半角" ) 
		$iTunesText = $iTunesText.Replace(")" , ")_半角" ) 
		$iTunesText = $iTunesText.Replace("ー" , "-_半角" )  
		$iTunesText = $iTunesText.Replace("+" , "+_半角" ) 
			
		$iTunesText = $iTunesText.Trim() 
			
	}
	
	return $iTunesText
			
}	

$iTunes.LibraryPlayList.Tracks | foreach{

	# 処理時間計測
	if ($RoopCounter%1000 -eq 0){
	
	$StopTime = Get-Date
	$RoopCounter
	Write-Host ($StopTime - $StartTime).TotalSeconds
	
	}
    
	$RoopCounter = $RoopCounter + 1
	
	# ジャンルがNewの場合※処理時間短縮のため、置換したい曲だけあらかじめジャンルをNewにしておく
	if ($_.Genre -eq "New"){
			
		# 曲名変換
		
		if ($_.Name -cne $null){
		
			$replaceName = replaceEmEn $_.Name
			
			if ($replaceName -cne $_.Name){
			
				Write-Host ('曲名変換_' + $_.Name + '→' + $replaceName)
				$_.Name = $replaceName
			
			}
			
			if ($_.SortName -cne $_.Name){
			
				$_.SortName = $_.Name
			
			}		
			
			# iTunesでは全角から半角に変換しても情報が保存されないので、一度別の曲名にして保存する	
			
			$replaceName = $replaceName.Replace("_半角" , "" )
			
			if ($replaceName -cne $_.Name){
			
				Write-Host ('曲名変換_' + $_.Name + '→' + $replaceName)
				$_.Name = $replaceName
				$_.SortName = $_.Name
			
			}
		
		}
		# アルバム名変換
		
		if ($_.Album -cne $null){
		
			$replaceAlbum = replaceEmEn $_.Album
			
			if ($replaceAlbum -cne $_.Album){
			
				Write-Host ('アルバム名変換_' + $_.Album + '→' + $replaceAlbum)
				$_.Album = $replaceAlbum
			
			}
			
			if ($_.SortAlbum -cne $_.Album){
			
				$_.SortAlbum = $_.Album
			
			}			
			
			$replaceAlbum = $replaceAlbum.Replace("_半角" , "" )
			
			if ($replaceAlbum -cne $_.Album){
			
				Write-Host ('曲名変換_' + $_.Album + '→' + $replaceAlbum)
				$_.Album = $replaceAlbum
				$_.SortAlbum = $_.Album
			
			}
		
		}
		
	}

}

$StopTime = Get-Date
$RoopCounter
Write-Host ($StopTime - $StartTime).TotalSeconds

以上です。ご参考までに。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?