iTunes を使用して、MacOSX で http mp3 ストリームをレンダリングしたいと考えています。プログラムで iTunes をリモート コントロールする最善の方法は AppleScript であり、すでに iTunes を起動できることは理解していますが、
- URL からストリームを開くための正しい構文は何ですか?
- Appleスクリプトを介してiTunesを実行するときに、iTunesを非表示/非表示にすることはできますか? それは常にGUIを開きます..
iTunes を使用して、MacOSX で http mp3 ストリームをレンダリングしたいと考えています。プログラムで iTunes をリモート コントロールする最善の方法は AppleScript であり、すでに iTunes を起動できることは理解していますが、
解決策を見つけました:
tell application "itunes" to open location "your_url_here"
tell application "itunes" to play
それは目に見えるようにiTunesを開きますが、少なくとも最小化されています.
ちなみに、私はJavaからこれを実行しました(ただし、これにはSnow Leopardが必要だと思います):
new ScriptEngineManager().getEngineByName("AppleScript").eval("tell application ...");
iTunes が実行されていないときにコマンドを送信すると、iTunes が起動してデフォルトの GUI が表示されます。それを回避する簡単な方法はありません。
ただし、iTunes がまだ表示されていない場合に非表示のままにするのではなく、強制的に非表示にする場合は、次のようにします。
tell application "iTunes"
open location "your_url_here"
play
set visible of every window to false
end tell
または、スクリプトで iTunes を起動した場合にだけ iTunes を隠したい場合は、次のようにします。
tell application "System Events"
set iTunesWasRunning to count of (processes whose name is "iTunes")
end tell
tell application "iTunes"
open location "your_url_here"
play
if iTunesWasRunning is 0 then set visible of every window to false
end tell
もちろん、処理できないエッジ ケースがいくつかあります (たとえば、iTunes が実行されていて、ブラウザ ウィンドウが最小化されていた場合、最小化を解除し、再度最小化することはありません)。iTunes およびシステム イベント ディクショナリに目を通し、関心のある各エッジ ケースを試してみてください。また、小さな競合状態 (チェック後にユーザーまたは別のスクリプトがたまたま起動した場合) がありますが、それについてできることはあまりありません。
特定のまれなケース (たとえば、iTunes がストリームで既に一時停止されている場合など) を除いて、実際には「再生」は必要ありませんが、害はありません。
最後に、デフォルトでは、実行するたびに "your_url_here" が "Internet Songs" という名前のプレイリストに追加されます。既にそこにある場合でも、必要に応じてプレイリストが作成されます。気にしないでいただければ幸いです。もしそうなら、学ぶべきより多くのトリックがあります。
または、ここで回答したように QuickTime Player を使用することもできます。同じファイルを開き、プリインストールされており、目に見える GUI をほとんど使用しないように強制できます。ただし、ストリームが終了したときに別のストリームを開始したい場合は、さらに複雑になります。