1

ファイルをライブラリに追加するために、Cocoa アプリで NSAppleScript から iTunes をスクリプト化しようとしています。

資格ファイルに、次を追加しました。

<key>com.apple.security.scripting-targets</key>
    <dict>
        <key>com.apple.itunes</key>
        <array>
            <string>com.apple.itunes.library.read-write</string>
        </array>
    </dict>

次に、AppleScript を次のように呼び出します。

var error: NSDictionary? = nil
let appleScript = NSAppleScript(source: "tell application \"iTunes\" to add (POSIX file \"\(path)\") to library playlist 1")
let result = appleScript?.executeAndReturnError(&error)

しかし、エラーで失敗します-10004:iTunes got an error: A privilege violation occurred.

itunesiTunes を両方の方法 (および)で大文字にしようとiTunesしましたが、何も機能しないようです。また、読み書きの資格に加えて、資格を追加してみましたread。最後に、ユーザーの Music フォルダ (iTunes ライブラリが保存されている場所) への読み取りおよび書き込みアクセスを追加しようとしましたが、これも役に立ちませんでした。

iTunes をスクリプト化するために、私が認識していない別の必要な資格はありますか?

ソリューションの検索でこのリンクを見つけました(リンク)が、ユーザーが自分のフォルダー内の特定のフォルダーを選択して、ユーザーが選択したLibraryファイルへのアクセスをアプリケーションに許可する必要があり、スクリプトを別のファイルに配置する必要があります.2やりたいことが多すぎる。スクリプト ファイルの管理に関してユーザーを信頼していません。AppleScript コード 1 行分のファイルは必要ありません。私が理解しているもう 1 つの欠点はNSUserAppleScriptTask、スクリプトの状態を複数の呼び出しにわたって保持できないことです。これは私の場合は問題ではありませんが、他の人にとっては問題になる可能性があります。

ありがとう

4

1 に答える 1

4

Apple の Developer Technical Support に連絡したところ、この問題を解決することができました。

まず、エンタイトルメントでは、バンドル ID の大文字と小文字を適切に区別する必要があります。iTunes の場合、資格は次のようにする必要があります ( TiTunes の大文字に注意してください)。

<key>com.apple.security.scripting-targets</key>
<dict>
    <key>com.apple.iTunes</key>
    <array>
        <string>com.apple.iTunes.library.read-write</string>
    </array>
</dict>

of source 1次に、AppleScript コードの最後に次のように含めない限り、特権違反が発生します。

tell application "iTunes" to add (POSIX file "your/path/to/mp3.mp3") to library playlist 1 of source 1

ほら!

于 2015-12-17T06:27:05.627 に答える