ちょっと改良してみた

  • 変更点

タグ付け対象をプレイリスト単位ではなく、選択トラックに変更。


前回のはカレントプレイリスト内のトラックに対してタグ付けしていったのですが、
この方法だとライブラリを表示してるときにまちがって実行してしまうと悲惨なことになってしまう。
あと、数曲だけタグ付けしたいって時にわざわざプレイリストを作成しないといけないのが面倒でした。
今回の改良でそのあたりの不便さが解消されているはずです。

  • 苦労したところ



「選択している曲に対して」ということをやるだけでかなりググりまくりました(^^ゞ
RDocに selection() OSA::ITunes::Application っていうのがあったのですが
戻り値がよくわからなかったんです。
で見つけました。



selected_tracks = itunes.selection.get

これで選択トラックが配列で返ってきますので煮るなり焼くなりと。

  • 今後の課題



iTunesのスクリプトメニューから実行できるようにしたい。
ためしにrbファイルのままぶち込んでみたが表示すらされませんでした。orz
AutomatorでUNIXコマンドを実行するコマンド部分にターミナルに打ち込んでた文字をコピペしてみたけどエラー。orz
だれかいい方法しりませんか?

#!/usr/bin/env ruby
#  SortByLanguage_iTunes_Selection
#  Created by Stewie on 2007-02-05.
begin require 'rubygems'; rescue LoadError; end
$KCODE = "UTF8"
require 'rbosa'
OSA.utf8_strings = true

itunes = OSA.app('iTunes')

#選択されているトラックを対象とする
selected_tracks = itunes.selection.get

selected_tracks.each{ |track|
  pre_comment = track.comment()
  puts "曲名「#{track.name}"
  puts "アーティスト名「#{track.artist}"

  if /\[Japanese\]|\[English\]/ =~ pre_comment
    p "分類済み"
   p pre_comment
  else
    p "未分類"
    kashi = track.lyrics()
    if kashi.length == 0
     p "歌詞がありません"
    elsif
      count = 0
      kashi.scan(/[a-zA-Z0-9\']/) {
        count += 1
      }

      puts "歌詞サイズ #{kashi.length}"
      puts "アルファベットにマッチ #{count}"
      par = (count.to_f / kashi.length.to_f)*100.to_f
      p "#{par.round}%"
      if par.round >= 65
        track.comment = "[English]" +"\r\n" +pre_comment
        p "洋楽に設定"
      elsif
        track.comment = "[Japanese]" +"\r\n" + pre_comment
        p "邦楽に設定"
      end
    end
  end
}