MacでUniteでiTunesを聴こう!

みなさん初めまして、skrby1です。
この記事はMacでVimを使っている人向けの記事です。

はじめに

みなさんVim使ってますか?
自分はここ1年ぐらいでVimを使い始めて、色々と便利さなどを実感している所です。今回はその中でも便利なVimのプラグイン「Unite」を利用して、iTunesのプレイリストや曲等を表示して再生できるようなソースを先人のページを参考に作ってみたので、ご紹介という記事です。

Uniteとは?

まぁ言わずもがなですが、軽く「Unite」のご紹介を。
簡単に言うと「Unite」とはVim上でいろんなものをリストアップしてくれて、それに対して色々な操作を実行できるという、超便利プラグインです!

参考にさせていただいたページ

もちろん、自分はVimも使い始めたばかりでそんなに詳しくないので、色々と調べてみて今回のプラグインを作るのに参考にさせていただいたページがあります。偉大な先人たちに感謝!、、、と言うかiTunesの中身を表示するネタは下記のページからいただきました。(礼)
Mac用にも使えるようにしてみたかったので、色々と自分で改良して作ってみたと言う次第です。本当に感謝です!

等々です。
他にも「Unite」でググればいろんなページが出てくると思いますので、興味のある方はぜひ!って言うか超有名なプラグインだから、もうみんな基本的な事は入ってますよね?

使い方

それでは自分の「Unite itunes」ソースの使い方のご紹介です。
正直完璧とはいえない実装ですが、多少目をつぶっていただけるとありがたいです。

基本操作

:Unite itunes
:Unite itunes:!
:Unite itunes:a:アルバム名
:Unite itunes:n:アーティスト名
:Unite itunes:y:曲の年
:Unite itunes:[><]:最小分数-最大分数

です。

[ :Unite itunes ]

これは一番基本になる感じで、これを入力するとiTunes内のプレイリストを表示します。
iTunesが起動していない場合は、iTunesを起動させて6秒後にVim(MacVimかターミナルのVim)にフォーカスが戻るようになっています。うまく動かない場合は申し訳ないですが、ご自分でそれぞれのVimにフォーカスを戻してください。

この画面で、プレイリストを選択して[Return]を押せば、プレイリストが頭から再生されます。
プレイリストを選択して[C-s]を押すと、そのプレイリストをシャッフル再生します。
プレイリストを選択して[C-t]を押すと、そのプレイリストの中にある曲をまたリストアップします。

この時頭に[s]がついている曲は、実際のダウンロードしてあるファイルではなくAppleMusicなどからライブラリに登録してある曲になります。
[S]だと、プレイリストを共有している場合の、ライブラリにも入れていないトラックの事になります。

この曲リストを表示している時に[BS]を押すと、前のプレイリストのリストに戻ります。
この曲リストを表示している所で[Return]を押すと、その曲を1曲だけ再生します。
[C-q]を押すと、その曲が含まれているアルバムを頭から再生します。
同様に[C-s]を押すと、その曲が含まれているアルバムをシャッフル再生します。
(これは.vimrcに設定を書く事で実現しています。設定はこのページの下の方で説明させてもらっています。)

この時iTunesにUniteという名前のプレイリストを作らせてもらいます。再生時にアルバムの指定ができないため、アルバムの曲を抽出して、Uniteという名前のプレイリストに一回登録してから、そのプレイリストを再生するようにしています。
Uniteという名前のプレイリストがない時は作成して、ある場合は、登録されている曲たちを削除してから再び指定のアルバムの曲たちを登録し直す感じになっています。

この時に制限なのですが、頭に[s]と[S]が付いているトラックはAppleScriptからプレイリストに登録する事ができないので、残念ですが、[C-q]と[C-s]でのアルバム単位での再生はできません。これは以下に書いてある曲をリストアップする所でも同様です。

ただし、それらの曲をダウンロードしてファイルがローカルにある状態になった場合は、アルバム毎の再生は可能になります。
もしどうしてもアルバム毎で聴きたい曲などありましたら、事前にダウンロードしておく事をお勧めします。

ここら辺もし解消できるのなら、後々改良したいと思っています。
誰かAppleScriptからshared trackをプレイリストに登録させる方法をご存知の方がいらっしゃいましたら、ぜひ教えていただけたらと思います。

[ :Unite itunes:! ]

これは、Play/Pauseのトグルになります。
本当は、Uniteの表示をしないようにしたいのですが、自分では、Uniteの表示をしない処理がわからなかったので、再生/停止状態を切り替えた後にiTunesのプレイリストのリストが表示されてしまいます。
どなたか、Uniteを実行している時に中から実行を停止する処理とかお分かりの方がいらっしゃったら、教えていただけたら嬉しいです。

[ :Unite itunes:a:アルバム名 ]

これは、指定した文字を含むアルバムをリストアップします。
大文字小文字の区別をしません。
もし、空白を含んだ文字を検索したい場合は、空白の代わりに「_」を間に入れてください。

ここで曲を選択して[Return]を押すと、その曲だけを再生します。
曲を選択して[C-s]を押すと、そのアルバムをシャッフル再生します。
曲を選択して[C-q]を押すと、そのアルバムを頭から再生します。
ここでも[s]と[S]の表示の曲はアルバム単位での再生ができません。

[ :Unite itunes:n:アーティスト名 ]

これは、指定した文字を含むアーティスト名をリストアップします。
これも大文字小文字の区別をしません。
空白を含みたい時もアルバムの時と同様で「_」を入れてください。

リストアップ後はアルバム名の時と同様の操作です。

[ :Unite itunes:y:曲の年 ]

これは、指定した年の曲をリストアップします。
結構リストが膨大になってしまうかもしれないので、表示に時間がかかったりするかもしれません。

リストアップ後はアルバム名の時と同様の操作です。

[ :Unite itunes:[><]:最小分数-最大分数 ]

これは、指定した最小分数以上、最大分数以下の曲をリストアップします。
分数は小数での指定が可能です。
が、例えば「6.1」の時は「6分6秒」の事になります。
「2.5」で「2分半」の事です。ご注意ください。

リストアップ後はアルバム名の時と同様の操作です。

制限など

申し訳ありませんが、このソースではAppleScriptを使用しているため、使用はMac限定になります!
Winユーザーの方はすみません!
使ってみたかった!という方(もしそんな方がいたら)は、上で紹介しているページなどを読んで、ぜひ自作されるといいと思います!一回きちんとUniteの仕組みの把握ができれば、実装もそんなに難しくないと思います!

ダウンロード、インストールの方法、設定等

githubに置いてありますので、NeoBundleなどをご利用な方は、普通に使えると思います!
もしよければ、どうぞお気軽にお使いください!

インストールは、、、

NeoBundle "skrby1/unite-itunes"

でいけると思います。
設定ですが、自分は.vimrcに

nnoremap <Space>ui :<C-u>Unite -buffer-name=itunes itunes

autocmd FileType unite call s:unite_my_settings()
function! s:unite_my_settings()
  let l:unite = unite#get_current_unite()
  if l:unite.buffer_name ==# 'itunes'
    nnoremap <silent><buffer><expr> <C-t> unite#do_action('enter_track')
    inoremap <silent><buffer><expr> <C-t> unite#do_action('enter_track')
    nnoremap <silent><buffer><expr> <C-s> unite#do_action('play_s')
    inoremap <silent><buffer><expr> <C-s> unite#do_action('play_s')
  elseif l:unite.buffer_name ==# 'itunes_tracks'
    nnoremap <silent><buffer><expr> <BS>  unite#do_action('back')
    nnoremap <silent><buffer><expr> <C-s> unite#do_action('play_s')
    inoremap <silent><buffer><expr> <C-s> unite#do_action('play_s')
    nnoremap <silent><buffer><expr> <C-q> unite#do_action('play_a')
    inoremap <silent><buffer><expr> <C-q> unite#do_action('play_a')
  endif
endfunction

の様な感じで書いてあります。この<C-t><C-s><C-q>等の所を変更すれば、Uniteバッファ内のキーマップをご自分の好きなキーマップに変更する事ができます。お好みでどうぞ。

おわりに

いかがでしたでしょうか?最初は簡単な感じで使えればいいや!って思っていたのですが、使っているうちにこんな表示もできたらいいなぁって感じでこんなぐらいの感じになりました!もし良さそうだなぁと思ったら、ぜひ使ってやってください!
こういったプラグインは作り始めたばかりでまだまだ実力が伴わないので、改善までは時間がかかってしまうかもしれませんが、機能のご要望やバグレポートなども受け付けます。御指南いただけたらと思います。
最後に「Unite」という素晴らしいプラグインを作成してくれたShougoさん。それとUnite周りの記事などでこのプラグインの作成のヒント(というかほとんど答えですが)をいただいたosyo-mangaさん等々、素晴らしいVimのプラグイン作者のみなさん、本当にありがとうございます!

以上自作の「Unite itunes」ソースのご紹介でした!
それでは!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です