powershell :mp3ファイルのプロパティ値の参照と出力
mp3ファイルのプロパティ値参照
たまったmp3ファイルからちょっと探し物がしたい時に、必要な情報のDBがあるとテキスト検索が楽。
mp3のプロパティ情報をかき集められないかを調べてみた。
目次
本文
1. サンプルコード
とりあえず自分のもっているmp3ファイルの情報を出力するスクリプト。
デスクトップにmp3.csvファイルを出力してくれる。
$obj_Path = "C:\music" $out_Dir = [System.Environment]::GetFolderPath("Desktop") $sh = New-Object -ComObject Shell.Application $a = Get-ChildItem -Recurse -Filter *.mp3 -Path $obj_Path $csv = "" $a | %{ $Dir = $_.DirectoryName $folder = $sh.Namespace($Dir) $fi = $folder.ParseName($_.Name) # Track No $num = $folder.GetDetailsOf($fi,26).PadLeft(2,"0") # Title $title = $folder.GetDetailsOf($fi, 21) # 曲の長さ $time = $folder.GetDetailsOf($fi, 27) # ファイルサイズ $size = $folder.GetDetailsOf($fi,1) # エンコード $enc = $folder.GetDetailsOf($fi, 28) # ミュージシャン $musician = $folder.GetDetailsOf($fi, 13) # アルバム名 $name_album = $folder.GetDetailsOf($fi, 14) # ファイル名 $name_file = $folder.GetDetailsOf($fi, 0) $csv += $musician + "," + $name_album + "," + $num + "," + $title + "," + $time + "," + $name_file + "," + $size + "," + $enc + "," + $Dir + "`n" } $csv_obj = $csv | ConvertFrom-Csv -Delimiter "," -Header "アーティスト名","アルバム名","No","タイトル","時間","ファイル名","サイズ","エンコード","ディレクトリ" $fileN = (JOIN-PATH $out_Dir "mp3.csv") $csv_obj | Export-Csv -Path $fileN -Encoding UTF8 -NoTypeInformation
2. 簡単な補足
GetDetailsOf でファイルの持つプロパティ値を参照している。これはデジカメのExif参照のときにも使ったテクニック。0~310までのIDごとにデータが格納されているので参照する。今回のスクリプトは公式リファレンスなどを参照していないので、間違ったデータを参照している可能性もある。
参考:
PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します
バージョン情報
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.19041.1023