mp3のタグ操作ライブラリの比較
mp3のタグ(id3って言うんですね)を操作するためのライブラリを少し弄って、二つのライブラリの比較をしてみた。その二つのライブラリとは。。。
それぞれの長所短所を挙げ、改良の余地について触れようと思う。
ただし、今回タグの値の抽出だけに焦点を絞っていることに注意して欲しいです。
そもそもの背景
手元のmp3ファイルをしまっているディレクトリの構成が混沌としてきているため。
手元のCDから落としたmp3ファイルは、きちんと「~/mp3/(アーティスト名)/(アルバム名)/(トラック番号)-(曲名).mp3」となっている。
しかし、別の方法で手に入れたmp3ファイルはそうはいかない。いわゆるネットレーベルと呼ばれるものに属しているアーティスト*1の楽曲は、うれしいことに無料でmp3ファイルがダウンロードできるケースが多い。しかし、mp3ファイルそのものをダウンロードするため手動で上記のファイル構成にしなければならない。これが面倒で、wgetをつかってmp3ファイルをダウンロードして、そのまま使っていた。
このままでは気持ちが悪いので、id3を見て上記のファイル構成を自動で行ってくれるスクリプトを作ろうと決心。言語は最近良く使っているRubyを使おう。次にid3を操作するためのライブラリだけど。。。。RAAやrubyforgeを見たら。。。。
多いよ!!
僕の環境はdebianなので、aptitudeで探してみたら
# aptitude search id3 | grep ruby (何にもない) # aptitude search mp3 | grep ruby p libmp3info-ruby1.8 - a pure ruby library for access to mp3 file p libmp3tag-ruby1.8 - Reading and writing ID3V1.1 tags in MP3 fo
libmp3tag-ruby1.8はv1.1だけみたいなので、上のlibmp3info-rubyをインストールしてみました。
しかし、後述となりますがlibmp3info-rubyには問題がありまして。。。結局Rubyforgeにあった、id3lib-rubyをgemでインストールすることに。
インストール方法の比較
二つのライブラリのインストール方法の比較をします。その前に僕の環境を示しておきます。
自分の環境
# uname -snr Linux debian 2.6.18-5-686 # ruby -v ruby 1.8.5 (2006-08-25) [i486-linux] #
APIの評価
各ドキュメントを以下に示しておきます。
僕は初めにlibmp3infoを使ってみたのですが。。。使い勝手に不満を覚えました。たしかに、v1とv2の両方の情報をハッシュとして取得ができるのですが、アーティスト名を示すキー値が、v1とv2で違っているためv1とv2が混在する環境では使いにくい。
一方id3libは、使う側がv1v2の違いを意識しなくても「インスタンス.artist」でアーティスト名が取得できる。