CDからripping・・・(未完)2009/06/21 12:38

CDから音楽をoggに落とそうとするのだが、gripやらjackやらが帯に短しなので、多少自力で対応してみる。

やることとしては、
・WAVファイルに落とす
・oggに変換
・FreeDBからディスクのトラック情報を得てoggに書き込む
となる。
 gripとかの不満点は、oggに書くときにこちらが想定しているのと異なるタグで書きに行っている点。

 WAVに落とすのはcdparanoia、ogg変換はoggencでいいとして、問題はFreeDBのあたり。cddbcmdと言うコマンドがコマンドラインで使えるらしいので試す。CDのディスク情報はcd-disikidと言うものを使用した。
 しかし。なんだこのあっさりしたmanは。何をどうすればいいのかわからない・・・。Googleに聞いてみてもあまり情報はヒットしない。
 とりあえず、helpを試す。
>cddbcmd -d help
 これを行うと、デフォルトサーバーのfreedb.orgに接続し、有効なコマンド一覧が得られた。この中で関係ありそうなのはCDDBというものらしいので、さらに、
>cddbcmd -d help cddb
とする。
 するとサブコマンドの一覧が出てくる。同様に調べて、
>cddbcmd -d help cddb query
<- QUERY <discid> <ntrks> <off_1> <off_2> <...> <off_n> <nsecs>
このパラメータは、cd-discidの出力と一緒。ディスク情報から該当するCD情報の一覧が得られるようだ。
>cddbcmd -d help cddb read
<- READ <category> <discid>
こちらは、queryで得られた情報から、categoryを指定して、各トラック情報を得るものらしい。とりあえずこれだけあれば何とかなるか。

 ほぼデフォルトで試す。
>cddbcmd -d cddb query `cd-discid /dev/cdrom`
 結果はコンソール上に出力される。冒頭に"->"とあるのはこちらからの送信、"<-"とあるのはサーバーから受信した内容。ともに標準エラー出力されている。サーバーからの情報は"<-"抜きのものも来ていて、これは標準出力となる。
 さて結果は、
<- 211 Found inexact matches, list follows (until terminating `.')
となり、そのあとにダラダラと、ディスクIDが近い?CDの情報が垂れ流される・・・。しかも日本語っぽいところが"?"になっている。charsetの壁かよ。
 すったもんだしたあげく、charsetの問題はコマンドオプションで"-l 6"とすればUTF8で読めるようになった。6というのはプロトコルのレベルらしい。このプロトコルに関する資料も見つからないのよね・・・
 これでトラック情報は取れるのだけど、見つからなかった場合に関係ないCDの情報が流れるのはうっとうしいな。しかも標準出力には"211..."は流れないし。"cddb query"で得られる情報は、スペース区切りで最初がカテゴリ(rockとかmiscとか)、次がディスクIDなので、ディスクIDが一致しないものを切ればいいのか・・・。

 と、ここまで書いて、力尽きてしまった。まだまだ使える情報にはならないな~