Skip to content

Instantly share code, notes, and snippets.

@fornext1119
Created August 7, 2012 07:15
Show Gist options
  • Save fornext1119/3282701 to your computer and use it in GitHub Desktop.
Save fornext1119/3282701 to your computer and use it in GitHub Desktop.
PowerShell で iTunes に 一括インポート
$global:it = New-Object -ComObject iTunes.Application
while($global:it -eq $null)
{
Start-Sleep 1
}
$global:artist_name = ""
$global:album_name = ""
$global:truck_name = ""
$global:truck_no = 0
ls -rec | select Fullname, Extension, Attributes | where {$_.Attributes -ne 'Directory'} |sort Fullname | foreach {ImportWav($_)}
$global:it.Quit
function ImportWav($arg)
{
$args = $arg.fullName.split("\")
$artist_offset = $args.length - 3
$album_offset = $args.length - 2
$truck_offset = $args.length - 1
if (($global:artist_name -ne $args[$artist_offset]) -or ($global:album_name -ne $args[$album_offset]))
{
$global:truck_no = 1
}
else
{
$global:truck_no++
}
$playlist_name = $args[$artist_offset], " - ", $args[$album_offset]
$playList = $global:it.LibrarySource.Playlists.ItemByName($playlist_name)
if ($playList -eq $null)
{
$playList = $global:it.CreatePlayList($playlist_name)
}
$global:artist_name = $args[$artist_offset]
$global:album_name = $args[$album_offset]
$global:truck_name = $args[$truck_offset]
write-host $arg.FullName, $arg.Extension, $playlist_name, $global:artist_name, $global:album_name, $global:truck_no, $global:truck_name
if ($arg.Extension -eq '.wav')
{
$sts = $global:it.ConvertFile($arg.fullName)
}
elseif ($arg.Extension -eq '.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')
{
$playList.AddTrack($track)
}
write-host " -> ", $track.Artist, $track.Album, $track.Name
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment