っていうかまずItunes com Interfaceのドキュメントが無いんだよね。
アップロードするのもアレだから情報だけ書くと、俺のPCには2009年タイムスタンプのiTunesCOM.chmがあってファイルサイズは264310バイト。バージョンは8.1.0.52
。MD5は315C0D34AE9BAA16CDEF326AC415814289A6D168239A34CE5CDC126A81A41640
ですと
で、iTunesComIterfaceはWin10 Itunes 12.3.1 64bitでも動くけど、iCloudとかの新しい機能に全然対応してない気がする。
このスクリプトではやってないけど、LibraryPlayList.AddFile
したファイルの曲名とかをスクリプトから設定する処理が入っている時はiTunesのメニュー→ストア からサインアウトすべき&Addfileして5秒はスリープすべき。
と言うのも、iTunesにサインインをしていると曲が追加された瞬間にiCloudにアップロードしようとする。その処理をしている間は曲名とか 曲のプロパティを書き換える処理は失敗するっぽい。
というのはともかく、以下が全ての曲情報を取得するコード。結構重い。
ItunesList.ps1
# utf16です
$iTunes = New-Object -Com "iTunes.Application"
$list=New-Object -TypeName System.Collections.ArrayList
$i.LibraryPlayList.Tracks | foreach{
$hasArtwork = ""
if ( $_.Artwork.count -ne 0 ){
$hasArtwork="○"
}
$list += [PSCustomObject]@{
Name = $_.Name
Genre = $_.Genre
SampleRate = $_.SampleRate
Size = $_.Size
Year = $_.Year
Artwork = if ( $_.Artwork.count -ne 0 ){"×"}else{"○"}
Podcast = if ( $_.Podcast -eq $false ){"×"}else{"○"}
Album = if( $_.Album -eq "" ){"-empty-"}else{$_.Album}
Artist = if( $_.Artist -eq "" ){ "-empty-" }else{ $_.Artist }
SortAlbum = if( $_.SortAlbum -eq "" ){ "-empty-"}else{ $_.SortAlbum }
SortArtist = if( $_.SortArtist -eq "" ){ "-empty-"}else{ $_.SortArtist }
SortName = if( $_.SortName -eq "" ){ "-empty-" }else{ $_.SortName }
Comment = if( $_.Comment -eq "" ){ "-empty-" }else{ $_.Comment -replace "`n"," " }
}
}
# $list | sort-object -property Name | Format-Table -AutoSize | more
$list | where Podcast -eq "×" | sort-object -property Name | Export-Csv "itunesList.tsv" -Delimiter `t -Encoding UTF8 -Force -NoTypeInformation