ミュージック.appの全てのアルバムカバーアートを書き出す
[主題]
ミュージック.appの音楽ライブラリに格納されているアルバムカバーアートを書き出すAppleScriptを作成したので、公開する。
[背景]
ミュージック.appで現在再生中のトラック(Current Track)から、アルバムカバーアートを書き出すAppleScriptは、ネット上のリソースにある。しかし、ライブラリにある全てのアルバムカバーアートを書き出すものは見かけない。
そこで、再生中のトラックからアルバムカバーアートを書き出すものを参考に、ライブラリにある全てのアルバムカバーアートを書き出すAppleScriptを筆者が自作したので、手前味噌ながら公開したい。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.2.1
Xcode 15.2
CommandLine Tools for Xcode 15.1.0.0.1
[前提]
本スクリプトは、アルバム数の取得にディスク番号を用いている。よって、ディスク番号が正しいこと(枚数が1枚の時、空欄のものは許容)が前提となる。
[AppleScript]
スクリプトを以下に示す。内容については、スクリプト内のコメントを参照されたい。
--ベースにしたスクリプト --以下の2つのスクリプトを大いに参考にさせて戴きました。感謝します。 --Save Current Track's Artwork --https://dougscripts.com/itunes/2014/10/save-current-tracks-artwork/ --iTunes のアートワークをファイルに書き出す --https://ashplanning.blogspot.com/2006/12/itunes.html on run --出力フォルダの選択 try set choosedFolder to (choose folder with prompt "アートワークを出力するフォルダを選択して下さい。") as string on error return end try --重複ファイル検査用カウンタ set aCTR to 0 tell application "Music" --ミュージック.appのライブラリを取得 set everyTrack to (every track of playlist "ミュージック") repeat with aTrack in everyTrack --ディスク番号が1未満は、空欄を意味する。 if disc number of aTrack < 2 then --その中のトラック1を抽出 if track number of aTrack is 1 then set thisArtist to artist of aTrack set thisAlbum to album of aTrack --複数のアートワークに対応するためには、このようにtellする必要がある。 --アーティスト名とアルバム名により、一意のトラックを識別する。 tell (track 1 whose album is thisAlbum and artist is thisArtist) --アートワークがある場合 if exists artworks then --複数のアートワークに対応。 set thisArtwoksCount to count of artworks repeat with i from 1 to thisArtwoksCount set fileName to thisArtist & "_" & thisAlbum & "_" & (i as string) --ファイル名に":"を含まないようにする set repFname to repChar(fileName, ":", "_") of me tell artwork i --画像フォーマットはjpgかpngのどちらか if format is JPEG picture then set imgFormat to ".jpg" else set imgFormat to ".png" end if --出力ファイル名 set theFile to (choosedFolder & repFname & imgFormat) as string tell application "Finder" to set fileExists to exists of alias theFile --ファイル名が重複しない場合は書き出す。 if not fileExists then --set theResult to my saveToFile(theFile, data) my saveToFile(theFile, data) --if theResult then --ファイルタイプ/クリエータタイプは何を設定しても無駄。 --拡張子を削除すると、テキストエディット書類になる。 --my openWithPreview(theFile, imgFormat) --end if else --Finderによる重複ファイルカウントのカウントアップ set aCTR to aCTR + 1 end if end tell end repeat end if end tell end if end if end repeat end tell if aCTR > 0 then activate display dialog "重複ファイルが " & aCTR & " 件ありました。" as string end if beep end run on saveToFile(theFile, theData) try set fh to open for access file theFile with write permission write theData to fh starting at 0 --スタートは0で良い。 close access fh return true on error errMsg number errNum try close access fh end try log {errNum, errMsg} return false end try end saveToFile --使わない on openWithPreview(theFile, imgFormat) tell application "Finder" if imgFormat is ".jpg" then set file type of (theFile as alias) to "JPEG" else set file type of (theFile as alias) to "PING" end if set creator type of (theFile as alias) to "prvw" end tell end openWithPreview --文字置換 v2 --Thanks for Piyomaru Software --http://piyocast.com/as/archives/476 on repChar(origText as string, targChar as string, repChar as string) set curDelim to AppleScript's text item delimiters set AppleScript's text item delimiters to targChar set tmpList to text items of origText set AppleScript's text item delimiters to repChar set retText to tmpList as string set AppleScript's text item delimiters to curDelim return retText end repChar
上記スクリプトをScriptEditorで開く(注)
(注)リンクを開くと、2段階の確認ダイアログが表示される。(下図)
最初に開くのは、ScriptEditorを開くかどうかを確認するダイアログ。次に開くのは、スクリプトの開発元が不明であることを警告するダイアログである。後者のダイアログについて、筆者を信頼するかしないかはお任せするが、このAppleScriptが危険なものか判断できない人は、使わないで戴きたい。
[参考記事]
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント