LoginSignup
3
1

More than 5 years have passed since last update.

PowerShellを使ってWindows版Itunes com Interfaceを使う

Posted at

っていうかまず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

3
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
3
1