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
以上です。ご参考までに。