iTunesのプレイリストの再生順トップ5を表示するスクリプト

RubyOSAのgemができたようなので試してみた。

#!/usr/bin/env ruby
require 'rubygems'
require 'rbosa'
require 'kconv'
$KCODE = 'u'

itunes = OSA.app 'iTunes'

current_playlist_tracks = itunes.current_playlist.tracks

current_playlist_tracks\
    .sort_by {|track| track.played_count  }[-5, 5].reverse\
    .each_with_index do |track, index|
  
  printf "%d位: %3d回  %s\n", 
          index + 1, track.played_count, track.name.toutf8

end

# 出力結果
1位:  39回  ダンデライオン
2位:  38回  オンリーロンリーグローリー
3位:  37回  sailing day
4位:  31回  グングニル
5位:  26回  跳べ

AppleScriptは書けないのでどちらで書くのが楽かはよくわからないです。Automatorとか使った方が楽かも。irbのメソッド補完がリファレンス代わりに使えるので超便利でした。

ところでsort_byを逆順で使いたい場合ってどうやるんですかね。sortしたものをreverseするのは効率が悪そう。sortを使えばできるけど、他の方法と比べて簡潔じゃないのが…。