foobar2000 と iTunes のレーティングを同期させる (イケてないけれど)

foobar2000 だと,音楽ファイルにカスタムタグ RATING を埋め込んで,それでレーティング情報を格納できる.一方,iTunes だと,iTumes のデータベースにレーティングを格納しているみたい.また,カスタムタグを読み込むことが出来ない.あと,iTunes は,iTunes のリストから曲を外すとレーティングが消えるよね.イケてない.

そこで,音楽を元の場所におきつつ,レーティング別のディレクトリを作って,そこにスタティックリンクを貼ることにした.基本 foobar2000 でレーティング付けをして,iTunes がファイルを読む順序をレーティング別にすることで,順々に iTunes のレーティングを付けることとする.

やったことは以下の通り.状況としては,音楽ファイルがとある計算機の samba 上においてあって,別の計算機で音楽を聴いたりしたい.あと,レーティングは 1 ~ 5 の 5 段階.

  1. foobar2000 でレーティング別にプレイリストを作って,ファイルに保存する
    1. ファイル名は "rating[1-5].txt"
  2. ファイルの中身を samba が動いている計算機上のパスに置換する
  3. 下のシェルを実行
#!/bin/sh

for i in 1 2 3 4 5; do
  mkdir -p "__R${i}"
  while read file; do
    file="`basename "${line}"`"
    if [ ! -f "${line}" ]; then
      echo "file not found: ${line}"
      continue
    fi
    if [ -f "__R${i}/${file}" ]; then
      continue
    fi
    ln "${line}" "__R${i}/${file}"
  done < "rate${i}.txt"
done
  1. カレントディレクトリに __R[1-5] の 5 つのディレクトリができてる