Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

ターミナルからコマンドを使用し「iTunes Store」で購入した楽曲ファイルのみ抽出したい

現在「ミュージック」アプリの楽曲保存フォルダはiTunes Media>Musicとなっております。

このMusic以下の楽曲のうち、iTunes Storeで購入したもののみを抽出したいです。

タグなどから抽出できるのでしょうか?

(出力する際はフルパスがわかると助かります。)

Windows, Windows 11 (22631)

投稿日 2024/04/24 13:22

返信
返信: 10

2024/04/24 17:01 Gig_Grimoire への返信

こんな感じの JXA スクリプトでどうでしょうか?


ファイル名

purchased.applescript


コード

#!/usr/bin/osascript -l JavaScript

//
// usage: osascript -l JavaScript purchased.applescript
//

'use strict';

ObjC.import('iTunesLibrary');

function run() {
    const err = $();
    const library = $.ITLibrary.libraryWithAPIVersionError('1.0', err);
    if (library.isNil()) {
        throw new Error(`error: ${err.localizedDescription.js}`);
    }
    const purchased = library.allMediaItems.js.filter(i => /\u{8CFC}\u{5165}|Purchased/iu.test(i.kind.js));
    const locations = purchased.map(x => x.location.path.js);
    const sorted = $(locations).sortedArrayUsingSelector('localizedStandardCompare:');
    return ObjC.deepUnwrap(sorted).join('\n');
}


# purchased が使えるはずなんですが何故か手元の環境では期待どおりの結果が得られないので、種類に「購入」または「Purchased」が含まれるか否かで判別しました。

2024/04/25 14:11 Gig_Grimoire への返信

まず、ファイルの保存についてですが、前掲のコードをテキストエディットなどのテキストエディタにコピペし、テキストエンコーディング: UTF-8、改行: LF、ファイル名: purchased.applescript で保存。その際、リッチテキストではなく、標準テキストで保存してください。


次に、実行方法。例えば purchased.applescript を ~/Desktop に置いた場合は Terminal から次のように実行します。


osascript -l JavaScript ~/Desktop/purchased.applescript


そうすると、ファイルのパスのリストが表示されます。(抽出はパスのみです)


2024/04/26 13:18 Hiro__S への返信

mediainfo コマンドだったらこんな感じのシェルスクリプトでいけそうです。購入済みか否かは「PurchaseDate」情報の有無で判別しました。


なお、「${HOME}/Music/Music/Media.localized」 のところは適宜書き換える必要があります。


#!/bin/zsh

#
# usage: zsh purchased.sh
#

rootdir="${HOME}/Music/Music/Media.localized"

find "${rootdir}" -type f | while read f; do
   purchasedate=$(mediainfo --Output='General;%PurchaseDate%' "${f}")
   if [[ -n "${purchasedate}" ]]; then
       echo "${f}"
   fi
done

2024/04/25 21:27 Gig_Grimoire への返信

ん??


>Windows, Windows 11 (22631)

PCのOS/機種はこれであってますか?


>ターミナルで抽出したいのです。

Win11のターミナルって? PowerShell?? WSLのbash?? まさかのDOS窓?


まずはあなたの環境をちゃんとみんなに伝えないと。。。。

2024/04/25 22:50 Gig_Grimoire への返信

前掲のスクリプトは Parallels Desktop 上の macOS Ventura 13.6.4 で動作確認しました。Sonoma は未導入なので動くかどうか分かりません。(多分動くとは思うのですが...)


もし、ダメな場合は mediainfo CLI 版をインストールして、情報を取得するシェルスクリプトを書くと良いかもしれません。

ターミナルからコマンドを使用し「iTunes Store」で購入した楽曲ファイルのみ抽出したい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。