iTunesライブラリ(+Apple Book)のメディアから楽曲(mediaKind=ITLibMediaItemMediaKindSong)のみ抽出してアルバムのタイトル+曲名の一覧を取得するAppleScriptです。
--> {{albumTitle:"アルバムタイトル名", songTitle:"曲名"}....}
のように、アルバム名と曲名のレコードをリスト化して返します。
iTunesLibrary.framework経由でメデイアアイテムの情報にアクセスするため、iTunes.appが起動していてもいなくても関係ありません。開発環境のマシン(MacBook Pro Retina 2012 Core i7 2.66GHz)でiTunesに6,871曲の楽曲が存在している状態で3.12秒程度です。
iTunes.appとプロセス間通信していないため、macOS 10.14でSecurityダイアログが表示されることもありません。
AppleScript名:iTunesライブラリ中の楽曲のみしぼりこんでアルバム名と曲名を出力 v2.scptd |
— Created 2018-10-16 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "iTunesLibrary" script spdList property albmList : {} property outList : {} end script property ITLibrary : a reference to current application’s ITLibrary property NSPredicate : a reference to current application’s NSPredicate set library to ITLibrary’s libraryWithAPIVersion:"1.0" |error|:(missing value) if library is equal to missing value then return set playLists to library’s allPlaylists() set gArray to (library’s allMediaItems()) set aPredicate to NSPredicate’s predicateWithFormat:"self.mediaKind = 2" –ITLibMediaItemMediaKindSong set filteredArray to gArray’s filteredArrayUsingPredicate:aPredicate set albmArray to (filteredArray’s album’s title) set (albmList of spdList) to (albmArray’s valueForKeyPath:"@distinctUnionOfObjects.self") as list set songArray to (filteredArray’s title) as list set aLen to length of songArray set albmArray to albmArray as list repeat with i from 1 to aLen set tmpItem1 to contents of item i of albmArray set tmpItem2 to contents of item i of songArray set the end of (outList of spdList) to {albumTitle:tmpItem1, songTitle:tmpItem2} end repeat |
More from my site
(Visited 58 times, 1 visits today)