MP3 のタグを UTF16 に変換する Ruby スクリプト
Windows で管理していた mp3 を Mac に持ってきて
iTunes に読ませたら派手に化けたので
Ruby タグを Unicode(UTF16) に変換する方法を探していた。
ID3Tagの文字コード変換 - みずぴー日記 で
id:mzp が id3lib-ruby でやって失敗していたけど
id3lib-ruby は内部で Unicode かどうかのフラグを持っているので
できるはずと思ってやってみた。
[id3toutf16.rb]
#!ruby # encode id3tag to utf16 # support V2.3 or previous # # license: Public Domain # update: 2008/02/27 # author: mallowlabs # blog: http://d.hatena.ne.jp/mallowlabs/ require 'rubygems' require 'id3lib' require 'kconv' ARGV.each{|path| dirty = false puts path tag = ID3Lib::Tag.new(path, ID3Lib::V2) [:TIT2, :TPE1, :TALB, :COMM].each {|id| tmp = tag.frame_text id next if tmp == nil tag.delete_if{ |frame| frame[:id] == id } tag << {:text=>tmp.toutf16, :textenc=>1, :id=>id} dirty = true } tag.update! if dirty }
使い方
id3lib-ruby が入ってない場合は gem でインストール
$ gem install id3lib-ruby
あとは変換したい mp3 があるディレクトリで
$ ruby id3toutf16.rb *.mp3
結果的にできたが、id3lib-ruby が V2.4 に対応してないっぽいため
タグが V2.4 で書かれたファイルはスキップする。
本家を読んでいたら
UTF-16 support (warning: id3lib writes broken UTF-16 frames)
http://id3lib-ruby.rubyforge.org/
とか書いてあったけど気にしない。
…ダメ?