0

pict ファイルからアートワークをキャプチャし、Python appscript を使用して iTunes のトラックに埋め込もうとしています。私はこのようなことをしました:

imFile = open('/Users/kartikaiyer/temp.pict','r')
data = imFile.read()
it = app('iTunes')
sel = it.current_track.get()
sel.artworks[0].data_.set(data[513:])

エラー OSERROR: -1731 MESSAGE: Unknown object が表示されます

同様の AppleScript コードは次のようになります。

tell application "iTunes"
    set the_artwork to read (POSIX file "/Users/kartikaiyer/temp.pict") from 513 as picture
    set data of artwork 1 of current track to the_artwork
end tell

ASTranslate を使用してみましたが、インスタンス化されずthe_artwork、への参照があるとエラーがスローされthe_artworkます。

4

3 に答える 3

3

これは古い質問ですが、私は今これと同じことをするのに苦労していたので、他の誰かが利益を得るかもしれない場合に備えて私の解決策を投稿すると思いました.

selected = appscript.app('iTunes').selection.get()

for t in selected:
    myArt = open(/path/to/image.jpg,'r')
    data = myArt.read()
    t.artworks[1].data_.set(data) # no need to remove header but one-indexed as has said earlier
    myArt.close()

お役に立てれば。

于 2010-12-27T16:46:22.957 に答える
0

このreadコマンドは、ASTranslateが変換しないScriptingAdditionsの一部です。ASDictionaryを使用して、[辞書]メニューの[インストールされているスクリプト追加の選択]をクリックし、リストから[スクリプト追加]を選択して、スクリプト追加の接着剤を作成します。

于 2010-05-07T09:22:12.760 に答える
0

簡単に推測すると、AppleScript 参照のような Appscript 参照は、Python リストのようなゼロ インデックスではなく、1 インデックスを使用します。したがって、おそらく次のように書く必要があります。

it.current_track.artworks[1].data_.set(...)

(ちなみに、get元のスクリプトの余分なコマンドは不要ですが、この場合は無害です。)

ASTranslate に関しては、実際にアプリケーションにコマンドを送信し、追加のスクリプトを作成してその結果を受け取るには、[イベントをアプリに送信] チェックボックスを有効にする必要があります。原則として、このオプションを無効にして、やなどの潜在的に破壊的なコマンドを変換するときに不幸な事故が起こらないようにすることをお勧めします。そのためsetdelete本当に必要な場合にのみ有効にし、実行するときに実行するコードに注意してください。 .

于 2009-10-30T22:25:17.413 に答える