blog.sorah.jp

Ruby から iTunes DJ の次の曲を指定する

play に対抗する物を作っていて、同じように iTunes DJ を使おうとして play 氏がどうやって iTunes DJ に次の曲として指定してるのか みたら、Add to queue で次の曲ではなくキューの最後に追加するだけ、という仕様で全く参考にならなかった。

自分は単純にボタンを押したら次に再生されるようにしたかったので、頑張って次の曲に追加するスクリプトを rb-appscript 使って書いた。

iTunes の Applescript インターフェース、プレイリストに曲を追加するのは末尾に追加しかできなくて、要するに以下の手順を踏まないと間に曲を差し込むことができない:

  1. 末尾に追加したい曲を入れる: [曲1, 曲2, 曲3, 追加したい曲]
  2. 末尾に既存の曲を入れる: [曲1, 曲2, 曲3, 追加したい曲, 曲1*, 曲2*, 曲3*]
  3. 先頭にある既存の曲を消す: [追加したい曲, 曲1*, 曲2*, 曲3*]

この方法しか無いんじゃないかと思ってググってたらやっぱりこれしか方法がなくて、 しかしググったおかげか、ループを使って消してくのかと思ったらたった 3 行で実現できるぽくて、ループでやると滅茶苦茶遅い事が判明した。

http://hints.macworld.com/article.php?story=20040830035448525

Applescript 本当に面白い仕様だと思う。

iTunes の設定

iTunes DJ で voting を有効にしてるとダメなので設定をオフにしましょう。

Voting を有効にしてると、プレイリストが曲の重複を許さなくなり、上述の方法が通用しなくなり道が閉ざされる。

Backfilled at , Published at