bash と ruby を使って mp3のタグを一括変換した際のメモ。
#!/usr/bin/ruby require 'mp3info' require 'nkf' mp3 = Mp3Info.open(ARGV[0]) mp3.tag2.options[:encoding] = 0 title=ARGV[1] mp3.tag.title = NKF.nkf('--euc-input -w16B', title) mp3.close
このスクリプトを title.rb という名前で保存。このスクリプトを使えば、たとえば hoge.mp3 というファイルのタイトルを"タイトル" に設定する場合は
$ ./title.rb hoge.mp3 "タイトル"
と実行すれば良い。なお"タイトル"という文字列はEUC-JPとした。
次に、 bash 側。 web で検索して出てきた曲名の一覧は、
数字. タイトル 数字. タイトル 数字. タイトル 数字. タイトル
という形式だったので、この一覧を list.txt という名前のテキストファイルに保存し、以下のようなbashのワンライナーを使って、一括設定。
nkf -e list.txt | while read num title; do num=`printf %02d ${num/./}` ./title.rb $num.mp3 "$title" done
これで、01.mp3 02.mp3 03.mp3 ... と続くmp3のファイル達に、対応するタイトルを設定することができた。