macOS上で動作するiTunesで再生している楽曲の情報を取得する

iTunes(10.15以降は「ミュージック」)で再生中の楽曲情報を取得する方法。

簡単にどうするかの説明的なもの

iTunesがOS(NSNotificationCenter)に対して投げる通知(com.apple.iTunes.playerInfo)を捕獲する。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(stateChanged:) name:@"com.apple.iTunes.playerInfo" object:nil];
}

- (void)stateChanged:(NSNotification *)notification
{
    NSDictionary *userInfo = notification.userInfo;
    for (id key in [userInfo keyEnumerator]) {
        NSLog(@"Key:%@ Value:%@¥n", key, [d valueForKey:key]);
    }
}

注意事項としてはこのコードはサンドボックスの外で動かすこと。

取得できる情報

iTunesが投げる通知を全て取り出したもの
情報は連想配列に格納されているため、その値を全て取り出したものが以下の通りである。

Key:Display Line 1 Value:タンポポ — 乙女 パスタに感動
Key:Back Button State Value:Prev
Key:Disc Number Value:1
Key:elapsedStr Value:-4:34
Key:Track Number Value:1
Key:Name Value:乙女 パスタに感動
Key:PersistentID Value:-7101576592875427120
Key:Player State Value:Paused
Key:Display Line 0 Value:乙女 パスタに感動
Key:Location Value:file:///Users/miyu/Music/iTunes/iTunes%20Media/Music/%E3%82%BF%E3%83%B3%E3%83%9B%E3%82%9A%E3%83%9B%E3%82%9A/%E4%B9%99%E5%A5%B3%20%E3%83%8F%E3%82%9A%E3%82%B9%E3%82%BF%E3%81%AB%E6%84%9F%E5%8B%95/01%20%E4%B9%99%E5%A5%B3%20%E3%83%8F%E3%82%9A%E3%82%B9%E3%82%BF%E3%81%AB%E6%84%9F%E5%8B%95.mp3
Key:Album Artist Value:タンポポ
Key:Artist Value:タンポポ
Key:Rating Computed Value:1
Key:Skip Count Value:0
Key:Year Value:2000
Key:Disc Count Value:1
Key:Library PersistentID Value:7305280474900814239
Key:Artwork Count Value:1
Key:Play Count Value:0
Key:Store URL Value:itmss://itunes.com/link?n=%E4%B9%99%E5%A5%B3%20%E3%83%91%E3%82%B9%E3%82%BF%E3%81%AB%E6%84%9F%E5%8B%95&an=%E3%82%BF%E3%83%B3%E3%83%9D%E3%83%9D&pn=%E4%B9%99%E5%A5%B3%20%E3%83%91%E3%82%B9%E3%82%BF%E3%81%AB%E6%84%9F%E5%8B%95
Key:Playlist PersistentID Value:-4413412429483844047
Key:Total Time Value:273841
Key:Genre Value:Pop
Key:Album Rating Computed Value:1
Key:Album Value:乙女 パスタに感動
Key:Album Rating Value:0
Key:Like Status Value:None

10.15以降はiTunesが標準でインストールされていないが、問題なく取得できるのか

結論から言うと前述の通り可能。

10.14で動作を確認したコードをそのまま11.6が動作するマシンへ持って行ってその上でビルドしたものであるが、下記画像の通り動作している。

11.6での動作結果

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です