AppleScriptをがんばってみたが、時間がもったいないので、Javaで作ってしまうことにした。
iTunesの操作にはAppleScriptを実行しなければならないが、Javaからスクリプトを実行できるモジュールをネットで入手していたから問題ない。
後は、GUIなどを作るだけだ。iTunesを操作するスクリプトはほぼできている。
ここで、問題があった。大きな結果を返すスクリプト(だいたい、300曲前後の曲が含まれるプレイリストの曲一覧のようなデータ)を実行するとフリーズしてしまうのだ。
ソースを読むと、osascriptをProcessオブジェクトを使って呼び出し、waitforで終了を待って、ストリームから結果を読み出す、読み出し終わったら処理終了という流れになっていた。
これを、ストリームからの読み出しはワーカスレッド化してしまい、waitforをなくして、スレッドの生存判定で処理を続行するか無限ループするかというように作り直した。
すると、大きな結果も問題なく取得できるようになった。アニメタルの全曲が入っているプレイリストは450曲以上含まれているのだが、それも取得できた。
ただし、iTunesと比較してデータに漏れがないかは確認していないし、処理速度的にも問題がある(遅い)のでリモコンになるかどうかは微妙だが、Kung-Tunesの代替には充分適用できると思われる。
もう少しがんばろう。
コメント