PowerShell で iTunes にインポートする
指定したフォルダ配下の曲を一括インポート
function ImportWav($arg) { $args = $arg.fullName.split("\") # 階層構造が 一律ではない # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\ディスク番号\曲名.mp3 # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\曲名.mp3 # c:\音楽\MP3\グループ分け\アルバム名\ディスク番号\曲名.mp3 # c:\音楽\MP3\グループ分け\アルバム名\曲名.mp3 $hierarchy_depth = $args.length $playlist_offset = $hierarchy_depth - ($hierarchy_depth - 3) $artist_offset = $playlist_offset + 1 $album_offset = $artist_offset + 1 $disk_offset = $album_offset + 1 $track_offset = $hierarchy_depth - 1 $playlist_name = $args[$playlist_offset] $artist_name = $args[$artist_offset] if ($album_offset -lt $track_offset) { # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\ディスク番号\曲名.mp3 の ケース # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\曲名.mp3 の ケース $album_name = $args[$album_offset] } else { # c:\音楽\MP3\グループ分け\アルバム名\曲名.mp3 の ケース $album_name = "" } if ($disk_offset -lt $track_offset) { # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\ディスク番号\曲名.mp3 の ケース $disk_name = $args[$disk_offset] } else { # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\曲名.mp3 の ケース $disk_name = "" } if ($album_name.StartsWith("Disc") -and $disk_name -eq "") { # c:\音楽\MP3\グループ分け\ディスク番号\曲名.mp3 $disk_name = $album_name $album_name = "" } if ($album_name -eq "" ) { # c:\音楽\MP3\グループ分け\アルバム名\ディスク番号\曲名.mp3 # c:\音楽\MP3\グループ分け\アルバム名\曲名.mp3 $album_name = $artist_name $artist_name = "その他" } $track_name = $disk_name, $arg.BaseName write-host $hierarchy_depth, ", play list = [",$playlist_name, "], artist = [", $artist_name, "], album = [", $album_name, "], track = [", $track_name, "]" if (($global:artist_name -ne $artist_name) -or ($global:album_name -ne $album_name)) { #アーティスト名かアルバム名が変わった $global:truck_no = 1 } else { #同一のアーティスト・アルバム $global:truck_no++ } $playList = $global:it.LibrarySource.Playlists.ItemByName($playlist_name) if ($playList -eq $null) { #未登録なら追加 $playList = $global:it.CreatePlayList($playlist_name) } $global:artist_name = $artist_name $global:album_name = $album_name $global:truck_name = $track_name if ($arg.Extension -eq '.wav') { #wave形式なら変換 $sts = $global:it.ConvertFile($arg.fullName) } elseif ($arg.Extension -eq '.mp3') { #mp3形式なら単に追加 $sts = $playList.AddFile($arg.fullName) } while($sts.InProgress) { Start-Sleep 1 } #タグの編集 foreach ($track in $sts.Tracks) { $track.Artist = $global:artist_name $track.Album = $global:album_name $track.TrackNumber = $global:truck_no $track.Name = $global:truck_name if ($arg.Extension -eq '.wav') { #wave形式なら追加 $playList.AddTrack($track) } } }
$global:it = New-Object -ComObject iTunes.Application $global:artist_name = "" $global:album_name = "" $global:truck_name = "" $global:truck_no = 0 #指定したフォルダ配下の曲を一括インポート # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\ディスク番号\曲名.mp3 # c:\音楽\MP3\グループ分け\アーティスト名\アルバム名\曲名.mp3 # c:\音楽\MP3\グループ分け\アルバム名\ディスク番号\曲名.mp3 # c:\音楽\MP3\グループ分け\アルバム名\曲名.mp3 # って感じで整理している Get-ChildItem "c:\音楽\MP3" -rec | select Fullname, Extension, Attributes, BaseName | where {($_.Attributes -ne 'Directory')} | sort Fullname | foreach {ImportWav($_)} $global:it.Quit