読者です 読者をやめる 読者になる 読者になる

yaotti's diary

QiitaやKobito、Qiita:Teamを作っています。Software is Eating the World

anything-mac-itunes.elというのを書きました

unite.vim の source をお好きなスクリプト言語で書ける unite-script - はこべにっき#を見て、エディタからiTunesの曲をインクリメンタルに絞り込んで再生できると便利だなーと思ったので
anything的にiTunesの曲を検索+再生できるelispを書きました。
Anything interface for iTunes (Mac only) — Gist
曲名の取得や再生にapplescriptを使っているので、名前からわかるようにMacでしか動きません。
上のファイルをパスの通った適当なところに置いて

(when (eq system-type 'darwin)
  (require 'anything-mac-itunes)
  (global-set-key (kbd "C-c m") 'anything-mac-itunes)
  (global-set-key (kbd "C-c b") 'anything-mac-itunes-back-track)
  (global-set-key (kbd "C-c n") 'anything-mac-itunes-next-track)
  (global-set-key (kbd "C-c p") 'anything-mac-itunes-playpause-track)
  (global-set-key (kbd "C-c c") 'anything-mac-itunes-show-current-track-info)
  )

.emacsに書くと、C-c mで曲を絞り込み*1+再生、C-c pでplay/pauseなどができます。C-c cを押すと今再生している曲の情報をminibufferに表示します。
最初の一度の実行は曲名リストを作成するため時間がかかりますが、それ以降はキャッシュされます。
言語を英語にしている人は(setq anything-mac-itunes-library-name "Library")とかしてください。
Emacs+Macユーザーの方はどうぞ。

追記
Carbon Emacsだと内部文字コードSJISらしく、曲を検索できなかったり曲名が文字化けしたりするそうです。(via @peccul)
なのでdo-applescriptにdefadivceで文字コード変換を前後に噛ませるか、CocoaEmacsにアップデートするかしないといけなさそうです。
CarbonEmacsは今後アップデートされないのでCocoaEmacsのインストールをおすすめします。
homebrewを入れてから

cp -R /Application/Emacs.app /Application/CarbonEmacs.app
brew install emacs --cocoa
ln -s /usr/local/Cellar/emacs/23.2/Emacs.app /Applications/Emacs.app
# あとは適当に/Application/CarbonEmacs.app内から足りないelispを.emacs.dに持ってくる

*1:検索対象は曲名、アルバム名、アーティスト名