GnuDb を curl を使って修正する覚書

初回掲出日: 2021-11-26
最終更新日: 2022-08-13

かつては freedb というのがあったが惜しまれつつサービス終了してしまったのはよく知られた話。
その後継のような立場として GnuDb というのがある。

freedb は現役時はメジャーだったみたいで、ノウハウは今でもよく見つかるのだが、 GnuDb については情報が乏しいようなので、ちょっと書いてみようと思う。

なおここでは、新規に登録するのではなく、既にある情報を修正する話を扱う。

きっかけ

Rebis - C.T.i.A / O.S.T (Cyber Team in Akihabara / Original Sound Track) という CD (名盤!) があるのだが..

Rebis - C.T.i.A / O.S.T

..これの C.T.i.A の T が Y に間違って登録されていた。

意味が通じないやん!
さすがにこれは許容できない。

筆者は asunder というソフトを使って CD を取り込んでおり、その際 GnuDb を参照するように設定しているが、当然ディレクトリ名やファイル名が間違った名前で入ってしまう。

やりかた

以下を大いに参考にさせていただく。

freedbをcurlを使って修正する

修正したいデータを持ってきて修正する

まず、修正したい CD を、GnuDb のサイトから 検索 する。

Rebis - C.T.i.A / O.S.T の例でいうと、以下に行き当たる。 (これを書いている時点で既に T に修正されている)

C.T.i.A./O.S.T. / Rebis
このページ、以前は曲名が文字化けしていたのだが (実際のデータは問題ないようだった)、今見たら文字化けしなくなっていた。

ページの下の方にある Discid: soundtrack / 660d3919 というのがリンクになっており、選択すると、テキストデータが得られる。

2022年8月11日現在、どうも上述の方法ではうまくいかなくなってしまった。 新しいやり方について 以前の方法ではうまくいかなくなったので新しいやりかた を参照。

この内容を、テキストエディタで修正していく。 なお、文字エンコーディングは UTF-8 であることを念のため確認する。
筆者は、以下に示す diff のように修正した。

--- 660d3919.org	2021-08-21 21:33:59.641110000 +0900
+++ 660d3919.txt	2021-08-21 21:51:42.837451000 +0900
@@ -29,12 +29,12 @@
 #
 # Disc length: 3387 seconds
 #
-# Revision: 8
-# Processed by: cddbd v1.5PL3 Copyright (c) Steve Scherf et al.
-# Submitted via: CDex 1.50beta9
+# Revision: 9
+# Processed by: GNU Emacs 27.2
+# Submitted via: curl 7.78.0 (x86_64--netbsd)
 #
 DISCID=660d3919
-DTITLE=C.Y.i.A./O.S.T. / Rebis 
+DTITLE=C.T.i.A/O.S.T / Rebis 
 DYEAR=1998
 DGENRE=Anime
 TTITLE0=CYBER TERAM in AKIHABARA(Piano Version)

修正を送る

筆者は、間違えないように、専用のシェルスクリプトを一旦作成して行った。 試行錯誤した末、おおよそ以下のようなものである。

#!/bin/sh
# 2021-08-21 nsmrtks

#curl \
curl -k \
 -X POST https://gnudb.gnudb.org/~cddb/submit.cgi \
 -H 'Category: Soundtrack' \
 -H 'Discid: 660d3919' \
 -H 'User-Email: メール@アド.レ.ス' \
 -H 'Submit-Mode: submit' -H 'Charset: UTF-8' --data-binary \
 @660d3919.txt

# -H 'Category: Anime' \

# EoF

以下、curl のコマンドラインについて。

再修正..

ちょっと余談のようになるが、「C.T.i.A/O.S.T」のように、「C.T.i.A」及び「O.S.T」の末尾にピリオドが付いていないのが、筆者は気に入らなくなってきた。
これを再修正したい。
そもそも前回、ピリオドを取り除くように修正したのが他ならぬ筆者であり、それを元に戻すことになる。
CD 自体は「C.T.i.A/O.S.T」のように、それぞれの末尾にピリオドが無いのが名前としては近いようだが..
以下に示すように修正する。 (前回の 660d3919.txt は 660d3919r9.txt にリネームしている)

--- 660d3919r9.txt	2021-08-21 21:51:42.837451000 +0900
+++ 660d3919.txt	2021-11-23 19:02:50.017984000 +0900
@@ -29,12 +29,12 @@
 #
 # Disc length: 3387 seconds
 #
-# Revision: 9
+# Revision: 10
 # Processed by: GNU Emacs 27.2
 # Submitted via: curl 7.78.0 (x86_64--netbsd)
 #
 DISCID=660d3919
-DTITLE=C.T.i.A/O.S.T / Rebis 
+DTITLE=C.T.i.A./O.S.T. / Rebis 
 DYEAR=1998
 DGENRE=Anime
 TTITLE0=CYBER TERAM in AKIHABARA(Piano Version)

ちなみに筆者が全く手を入れる前の Revision 8 と比較するなら以下のようである。

--- 660d3919.org	2021-08-21 21:33:59.641110000 +0900
+++ 660d3919.txt	2021-11-23 19:02:50.017984000 +0900
@@ -29,12 +29,12 @@
 #
 # Disc length: 3387 seconds
 #
-# Revision: 8
-# Processed by: cddbd v1.5PL3 Copyright (c) Steve Scherf et al.
-# Submitted via: CDex 1.50beta9
+# Revision: 10
+# Processed by: GNU Emacs 27.2
+# Submitted via: curl 7.78.0 (x86_64--netbsd)
 #
 DISCID=660d3919
-DTITLE=C.Y.i.A./O.S.T. / Rebis 
+DTITLE=C.T.i.A./O.S.T. / Rebis 
 DYEAR=1998
 DGENRE=Anime
 TTITLE0=CYBER TERAM in AKIHABARA(Piano Version)

前回と同じシェルスクリプトを用いて送信した。

再々修正..

TTITLE0= が「CYBER TERAM in AKIHABARA(Piano Version)」となっているが、 「AKIHABARA」と「(Piano Version)」の間が詰まっているが、スペースを空けた上で、且つ「Version」のようにキャピタライズせず「version」の方が正確なのではないか?

CYBER TERAM in AKIHABARA (Piano version)


そこでこれを修正することにする。
また、Submitted via の curl 7.78.0 は 7.80.0 の方が正確であったのでそれも修正している。
(前回の 660d3919.txt は 660d3919r10.txt にリネームしている)

--- 660d3919r10.txt	2021-11-23 19:02:50.017984000 +0900
+++ 660d3919.txt	2021-11-23 20:00:37.890466000 +0900
@@ -29,15 +29,15 @@
 #
 # Disc length: 3387 seconds
 #
-# Revision: 10
+# Revision: 11
 # Processed by: GNU Emacs 27.2
-# Submitted via: curl 7.78.0 (x86_64--netbsd)
+# Submitted via: curl 7.80.0 (x86_64--netbsd)
 #
 DISCID=660d3919
 DTITLE=C.T.i.A./O.S.T. / Rebis 
 DYEAR=1998
 DGENRE=Anime
-TTITLE0=CYBER TERAM in AKIHABARA(Piano Version)
+TTITLE0=CYBER TERAM in AKIHABARA (Piano version)
 TTITLE1=Birth
 TTITLE2=Subtitle
 TTITLE3=アキハバラ電脳組

やはり前回と同じシェルスクリプトを用いて送信した。

green$ sh submit.sh
200 OK, submission has been sent.

ちょっと気になる

あらためてテキストデータを取得してみると、改行コードが、CR+LF と LF が混ざっているようだ。 最初は LF になっていたようなのだが。
こちらが送信したものは LF になっているし、curl で --data-binary 〜 を指定している。
他の CD のテキストデータも少し見てみたが、そちらも LF になっているようだ。
うーむ..
上記までで当 CD の GnuDb の情報を修正した上で、asunder も GnuDb を指すようにして、当 CD を asunder であらためて取り込んでみたが、タイトルや曲名は正しいようであった。

ひょっとしてと思い、かなり新し目の CD (2021年11月) を検索してみた。 すると..

谷山浩子 / 浩子の宅録
Discid: soundtrack / 910a9e0b

..やはりというか、同様に CR+LF と LF が混ざっていた。

よって、GnuDb 側の問題と思われる。

おまけ

この CD は、正しくは「Rebis - C.T.i.A / O.S.T」という全体がタイトルであるが、GnuDb の情報では、修正前も後も、「Rebis」がタイトルで、「C.T.i.A./O.S.T.」がアーティスト名のようになってしまっている。
本当はこれも何とかしたかったのだが.. だがこの CD では特定のアーティストというものがおらず、アーティスト名は何とするのが最も正しいのか。
全く別の CD で、以前 various artists としている例を見たような気がするが..
freedb や GnuDb で最もよく使われる作法があるのか。
それとも、このレコード会社での呼び方があるのか。

実は他にも C.T.i.A / O.S.T というのが付いている CD も存在する。 じゃ、もういっそのこと C.T.i.A / O.S.T がアーティスト名ということでいいじゃんと思われるかもしれない。
だが、C.T.i.A / C.I.S (Character Image Songs か??) となっている例もあるのである。

アキハバラ電脳組の CD 4種

2011年の夏休み.. 当時は遙か未来でしたよねえ。

何か良いやり方はないか..

(2022年追記) 以前の方法ではうまくいかなくなったので新しいやりかた

以前は、GnuDB 上で検索したら、リンク先から xmcd のテキストファイルを得られていたのだが、どうも出来なくなった。

探してみると、以下のページを見つけたので、どうやればいいか解釈してみる。

gnudb.org CDDB Server protocol, developer info.

以下の「魔法先生ネギま!」の CD を使って例示する。

魔法先生ネギま! 6月:図書館探検部

曲目

修正したい CD を GnuDb のサイトから 検索 する所までは同じである。

この CD でいうと、以下に行き当たる。

図書館探検部(桑谷夏子、石毛佐和、能登麻美子) / 魔法先生
CD のアーティスト名/タイトルが長すぎて、HTML のページとしては title が切れているようだ。

ページの下の方に、「Category: blues - Discid: 42057b06」と書かれている。 (リンクにはなっていない)

この「blues」と「42057b06」を指定した、以下の URL にアクセスする。

http://gnudb.gnudb.org/~cddb/cddb.cgi?cmd=cddb+read+blues+42057b06&hello=name+my.host.com+gnutest+0.1&proto=6
hello=name+my.host.com+gnutest+0.1 の所は gnudb.org CDDB Server protocol, developer info. のサンプルをそのまま使っているが、正式にはどうすべきなのか分からない..

ウェブブラウザだとうまく表示できないかもしれないが、ウェブブラウザの Page Source 機能を使うなどすると、xmcd のテキスト(を含むもの)が得られる。

今回たまたま短いので、以下に全体を示す。

210 blues 42057b06 CD database entry follows (until terminating `.')
# xmcd CD database file
#
# Track frame offsets:
#	150
#	1615
#	18485
#	35247
#	52185
#	92595
#
# Disc length: 1405 seconds
#
# Revision: 18
# Processed by: cddbd v1.5.2PL0 Copyright (c) Steve Scherf et al.
# Submitted via: CDex 1.60beta1
#
DISCID=42057b06
DTITLE=図書館探検部(桑谷夏子、石毛佐和、能登麻美子) / 魔法先生ネギま! 麻帆良学園中等部2-A 6月:図書館探検部
DYEAR=2004
DGENRE=Anime
TTITLE0=Tankenbu's Voice
TTITLE1=Invitation〜図書館へいらっしゃい〜
TTITLE2=Invitation〜図書館へいらっしゃい〜 (Remix ver.)
TTITLE3=Invitation〜図書館へいらっしゃい〜 (Instrumental ver)
TTITLE4=図書館探検部ミニドラマ 「ライブラリー・エクスプローラー」
TTITLE5=キャストフリートーク
EXTD= YEAR: 2004
EXTT0=
EXTT1=
EXTT2=
EXTT3=
EXTT4=
EXTT5=
PLAYORDER=
.

この先頭の「210 blues 42057b06 CD database entry follows (until terminating `.')」という行と末尾の「.」の行を取り除き、さらに必要な修正を加える。 今回は、以下の diff で示す修正を加えた。 (やり直したので Revision が 2つ上がっている)

--- 42057b06.ORIG	2022-08-11 22:59:19.404824000 +0900
+++ 42057b06.txt	2022-08-13 20:24:40.960123000 +0900
@@ -1,4 +1,3 @@
-210 blues 42057b06 CD database entry follows (until terminating `.')
 # xmcd CD database file
 #
 # Track frame offsets:
@@ -11,18 +10,18 @@
 #
 # Disc length: 1405 seconds
 #
-# Revision: 18
-# Processed by: cddbd v1.5.2PL0 Copyright (c) Steve Scherf et al.
-# Submitted via: CDex 1.60beta1
+# Revision: 20
+# Processed by: GNU Emacs 28.1
+# Submitted via: curl 7.84.0 (x86_64--netbsd)
 #
 DISCID=42057b06
 DTITLE=図書館探検部(桑谷夏子、石毛佐和、能登麻美子) / 魔法先生ネギま! 麻帆良学園中等部2-A 6月:図書館探検部
 DYEAR=2004
 DGENRE=Anime
-TTITLE0=Tankenbu's Voice
+TTITLE0=Toshokan-Tankenbu's Voice
 TTITLE1=Invitation〜図書館へいらっしゃい〜
 TTITLE2=Invitation〜図書館へいらっしゃい〜 (Remix ver.)
-TTITLE3=Invitation〜図書館へいらっしゃい〜 (Instrumental ver)
+TTITLE3=Invitation〜図書館へいらっしゃい〜 (Instrumental ver.)
 TTITLE4=図書館探検部ミニドラマ 「ライブラリー・エクスプローラー」
 TTITLE5=キャストフリートーク
 EXTD= YEAR: 2004
@@ -33,4 +32,3 @@
 EXTT4=
 EXTT5=
 PLAYORDER=
-.

そうして、送信する方法は、前回までと同じである。 今回もシェルスクリプト (前回より少し改善した) を用いて送信した。

#!/bin/sh
# 2021-08-21,2022-08-13 nsmrtks

# Change this!
category=blues
discid=42057b06

#curl \
curl -k \
 -X POST https://gnudb.gnudb.org/~cddb/submit.cgi \
 -H "Category: ${category}" \
 -H "Discid: ${discid}" \
 -H 'User-Email: メール@アド.レ.ス' \
 -H 'Submit-Mode: submit' -H 'Charset: UTF-8' --data-binary \
 @${discid}.txt

# EoF
$ sh submit.sh
200 OK, submission has been sent.

以上


index