MP3ファイルからMP3タグの情報を取得するAppleScriptです。
とりあえず「取り出せることを確認した」というレベルの実装で、取り出したデータをタグに応じた加工を行うといった処理はほとんど書いてありません。各自よろしくお取り扱いください(投げやり)。
正直、Musicフォルダ以外に転がっている野良MP3ファイルから直接MP3タグ情報を読まなくても、iTunes.appにインポートしておいて、iTunes.appやらiTunesLibrary.framework経由で楽曲ファイルにアクセスしたほうが(データ形式のゆらぎを吸収してもらえるため)安全で楽です。
AppleScript名:MP3ファイルからMP3タグの情報を取得.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/04/01 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — 参照先:http://d.hatena.ne.jp/terazzo/20120107/1325967445 use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use framework "AppKit" use framework "AVFoundation" use scripting additions property |NSURL| : a reference to current application’s |NSURL| property NSImage : a reference to current application’s NSImage property AVURLAsset : a reference to current application’s AVURLAsset property AVMetadataFormatID3Metadata : a reference to current application’s AVMetadataFormatID3Metadata property AVMetadataCommonKeyAlbumName : a reference to current application’s AVMetadataCommonKeyAlbumName set aPath to POSIX path of (choose file of type {"public.mp3"}) set aMP3Info to getMP3TagsFromFile(aPath) of me on getMP3TagsFromFile(aPath) set aURL to |NSURL|’s fileURLWithPath:aPath set anAsset to AVURLAsset’s assetWithURL:aURL set aRes to (anAsset’s availableMetadataFormats()’s containsObject:(AVMetadataFormatID3Metadata)) as boolean if aRes = false then return false set origMetadata to (anAsset’s metadataForFormat:(AVMetadataFormatID3Metadata)) as list set outList to {} repeat with i in origMetadata set aKey to (i’s |key|()) as list of string or string –as anything set bKey to i’s commonKey() as list of string or string –as anything if aKey = "PIC" or aKey = "APIC" then set aVal to (i’s value()) set aVal to (NSImage’s alloc()’s initWithData:aVal) else set aVal to (i’s value()) as list of string or string –as anything end if set the end of outList to {aKey, bKey, aVal} end repeat return outList end getMP3TagsFromFile |