2015年7月23日木曜日

星とラブの困惑からの脱出 - iTunes 12.2

Appleは、iTunes 12.2から、従来の星によるレーティングに加え、Loveというレーティングを追加した。
これは、Apple Musicへの対応に伴うものだそうだ。Loveしたトラックまたはアルバムから、Apple Musicでのオススメを作り出すためのモノらしい。

なぜ、今回Appleは、過去の遺産も必要とあればバッサリ切る、いつもの方針を示さなかったのだろうか?
例えば、技術的には、星によるレーティングで、星いくつ以上ならばLoveにするというような機能を持たせることは、可能だったはずだ。

こういう中途半端な事をすると、すぐにこんな記事が書かれることになる。記事は英語で、筆者も辞書を引きながら読んだ箇所もあるが、爆笑モノだ。一読をお勧めする。(笑)

冗談はさて置いて、確かに、図のように、トラックまたはアルバムの評価基準を選択する設定はある。だから、レガシーな星によるレーティングをいじらないまま、見えなくする事はできる。

だが、見かけ上の操作ができるとしても、星かラブのどちらかにするか、あるいは、可能であれば星からラブへの移行がしたいと思った。別にApple Musicを使うつもりだからではなく、評価基準を統一したいと思ったのだ。

星からラブへの移行
冒頭にも書いた通り、iTunes自体にこの機能が欲しかった。だが、今のところはない。調べてみると、星の方はiTunes Library.xmlに記録されているのだが、ラブはなかった。
すわっ、Objective-Cで何か作らなきゃと思ったのは愚かだった。多分、その方が処理速度は早いだろう。だが、速度はさておき、手軽な手段を忘れていた。AppleScriptである。

次のAppleScriptは、ラブにする星の数を設定し、また、星からラブに移行するかどうかも選択できる。(掲載例は移行しない設定)

-- ラブにする星の数(実際は整数値)を設定。数値と星の対応:20=★, 40=★★, 60=★★★, 80=★★★★,  100=★★★★★
set thresholdRating to 80

-- ラブに移行する場合はtrue、移行しない場合はfalse
set delteteStar to false

set trackCount to 0

tell application "iTunes"

    -- iTunesのバージョンチェック。ラブは12.2以降。
    considering numeric strings
    set newEnough to version ≥ "12.2"
    end considering
    
    if newEnough then
        
        -- 総トラック数の算出
        set totalTracks to (every file track)
        set totalTracksCount to count totalTracks
        
        repeat with aTrack in totalTracks
            
            set trackRating to rating of aTrack
            
            -- レーティングがゼロでなければ処理
            if trackRating ≠ 0 then
                
                -- 設定★数以上の場合はラブにする
                if trackRating ≥ thresholdRating then set loved of aTrack to true
                
                -- ラブに移行する場合はレーティングをゼロにする
                if delteteStar then set rating of aTrack to 0
                
            end if
            
            -- カウンターのインクリメント
            set trackCount to trackCount + 1
            
            -- メッセージ欄に進捗状況を出力
            log "Processing: " & trackCount & " of " & totalTracksCount
            
        end repeat
        
    end if

end tell

作業は、一時的に、iTunes 12.2(以降)の詳細環境設定で、iTunes ライブラリ XML を他のアプリケーションと共有をオフにしたほうが早い。

iTunesライブラリの各トラックに設定されている星をラブに置き換えるので、上図の表示設定とは関係なく実行できる。確認のため星とラブを表示しておくのも良し、ラブにしておくのも良し、お好みでどうぞ!

2015.07.25 改訂
AppleScriptにラブに移行する設定でも星が残ってしまうバグがあったので修正。

0 件のコメント :

コメントを投稿