2010年03月31日

CDDB問い合わせ

他のページへのリンク

既存のコマンドを組み合わせたら、自前の自動リッピング処理が作れるのではないか?

先日調べたabcdeスクリプトがシェルスクリプトだったところから、そんなこと考えてみました。
たぶんできるのでしょう。
必要なコマンドが見つかられれば、それを呼び出すGUI作ればいいだけ。
それぐらいなら自前で何とかなりそうです。

ということで、少しずつ調べてみようかと。

まずは、CDDB問い合わせ部分から。
CDDB自体はhttp問い合わせができるはずなので、httpを利用して必要なCDの情報がとれるのがベスト。
ちなみに、テストに使ったCDはこれ→Sa・Ga 全曲集

調べてみると"cd-diskid"コマンドが利用できそうなので、早速チャレンジ。
$ cd-discid /dev/sr0
bb0c1e22 34 150 9992 17360 25337 32467 35482 43477 49482 55867 60592 66775 77825 83652 87980 96065 107447 115885 121017 127997 131075 142075 146887 152317 157837 162177 168442 169827 175515 185295 192212 203012 210995 218620 229950 3104

おぉ、なんかそれっぽい値が!

続いて、これを利用してCDDBに問い合わせ。
よく考えたらCDDBの細かい仕様を知らないのでまずは調査を。

8880ポートでCDDBサーバとのやりとりもあるらしいと初めて知りましたが、今回はhttpを利用してさくっと簡単にとりたいので、そちらを調べてみました。

HTTPで接続する上で、最低限必要な情報下記のようなイメージの様子
文字列は"+"を区切り文字として結合。
cmd=[server コマンド]&[認証情報]&[プロトコルレベル]

まずは、簡単なプロトコルレベルから。
プロトコルレベルは"1"から"6"まであるようす。
日本語を使う場合は、UTF-8に対応した6を選ぶ方がよさそう。
それ以前のプロトコルレベルはUTF-8未対応らしいので、2バイト文字は化けそう。

続いてcddbの認証について
以下のような形で記述。
hello [username] [hostname] [clientname] [version]
hello:固定
username:接続に利用するユーザ名 メールアドレスなど
hostname:接続クライアント名 マシン名など
clientname:クライアントソフト名 今回はwgetにしておきます。
version:クライアントソフトのバージョン 今回はwgetのバージョン

最後にサーバコマンドの部分。
今回ほしいと思っているのはトラックの情報。
これは、「cddb read」コマンドで取得できそう。
ただし、「cddb read」コマンドはパラメータに「カテゴリー」を指定する必要がある様子。
「カテゴリー」を取得するには、「cddb query」コマンドを利用する様子。
先のcd-discidの取得結果は、「cddb query」コマンドのパラメータに利用。
「cddb read」コマンドにも利用するみたいですが。

ここまで書いて疲れたので続きは明日以降に。
posted by いち at 23:14| Comment(0) | TrackBack(0) | Linux/Unix系
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/36782558

この記事へのトラックバック