0

アルバム アートワークを管理するために AppleScript を作成しています。選択したトラックに含まれるすべてのアートワークを削除するコードを書き込もうとしています (iTunes トラックには最大 30 個のアートワーク オブジェクトを含めることができます)。これは、iTunes でトラックを選択し、[情報を見る] ウィンドウを開き、(空白の) アートワーク ボックスをチェックするのと同じです。

例として、動作すべきコード:

tell application "iTunes" to set t to track 1 of playlist "Example Playlist"
tell t to delete every artwork

最初のアートワークのみを削除する構文は次のようになります。tell t to delete artwork 1

残念ながら、AppleScript は連携していません。トラックに 2 つのアートワークがある場合、最初のアートワークのみが削除されます。トラックにアートワークが 3 つある場合、最初の 2 つが削除されます。

これは、削除コマンドの実行中にアートワーク インデックスが変更される問題のようです (つまり、2 つのアートワークを含むトラックの場合、アートワーク 1 は正常に削除されますが、アートワーク 2 を削除しようとすると、名前が変更されているため見つかりません)。元のアートワーク 1 が削除されたときにアートワーク 1 に)。ユーザー定義のリストでは機能しないように見えるため、指定子を強制的にリストに入れようとしてevery artworkも (元に戻すことができるように) 機能しません。delete

私が間違っていることを誰かが知っていますか?リピート ループを使用して、トラック内のすべてのアートワークを繰り返し処理し、それぞれを個別に削除できることはわかっていますが、これは AppleScript の単純さの試みに反しているようです。私はどういうわけeveryかステートメントを誤用していますか?

4

1 に答える 1

1

試す:

tell application "iTunes"
    set t to first item of (get selection)
    delete t's artworks
end tell

また

tell application "iTunes"
    set t to first item of (get selection)
    set tArtwork to t's artworks
    repeat with i from (count tArtwork) to 1 by -1
        delete tArtwork's item i
    end repeat
end tell
于 2013-11-11T09:44:11.610 に答える