freedbをcurlを使って修正する

freedbを扱えるソフトも色々ありますが、送信しても何故か反映されなかったり、そもそもCD持ってないと送信できなかったりするので、いっそ手作業でやってしまおうという発想です。curlはPOST担当。

freedb 日本語のデータを修正するという前提で書いています。freedb.orgなら多分メールした方が楽です。

手順

  1. 修正したいデータのジャンルとdiscidを調べる
  2. 修正したいデータを持ってきて修正する
  3. 修正を送る

修正したいデータのジャンルとdiscidを調べる

freedbでは1枚のCDは、(freedbに登録されている)ジャンルとdiscidで特定できます。

もしソフトなどで調べた後で既にわかっているならその情報を使います。

わからなければ、freedb 日本語ならnamazuによるDB検索で、曲名なりアルバム名なりで検索して、CD情報ページの上のほうを見ます。URLでもいいです。

DISCID misc/2703f104 2017/12/12_12:02:19
この場合、ジャンルはmisc、discidは2703f104です。どこかにメモしておいてください。

このページはすぐ後でまた使うので開いたままにしておきます。

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

DBの生データを入手して、それを修正します。

生データの取得

CD情報ページの、discid部分がリンクになっているので、そこを押します。こんな感じのものが現れます。

(URL) http://freedbtest.dyndns.org/dbread2.php?raw=true&dbpath={ジャンル}/{discid}

# xmcd CD database file
#
# Track frame offsets:
#	150
#	16354
#	38115
#	54319
#
# Disc length: 1011 seconds
#
# Revision: 1
# Processed by: cddbd v1.4PL0 Copyright (c) Steve Scherf et al.
# Submitted via: CDex 1.70beta2
#
DISCID=2703f104
DTITLE=情報処理部 / OVA「ゆゆ式」OP&EDテーマ
DYEAR=2017
DGENRE=Anime
TTITLE0=きらめきっ!の日
TTITLE1=青空のつくりかた
TTITLE2=きらめきっ!の日(Instrumental)
TTITLE3=青空のつくりかた(Instrumental)
EXTD= YEAR: 2017
EXTT0=
EXTT1=
EXTT2=
EXTT3=
PLAYORDER=

これが生データです。修正のためにUTF-8で保存してください。

もしコマンドで取得したければ、cddbってパッケージに入ってるものを使えばできます。これを使うとCDDBのプロトコルを使って取得してきます。-l 6はUTF-8で取得するためのおまじないです。(参考 CDDBPROTO)
cddbcmd -m http -h freedbtest.dyndns.org -l 6 cddb read {ジャンル} {discid}

データを修正する

さて、曲名とかアルバム名を書き換えて修正します。DTITLEとかTTITLE0などをいじることになると思います。トラック番号は0から始まるので注意してください。

よくこのように2行以上に分かれているデータもあります。256文字(もしかするとバイトかも) を超えないなら、くっつけて1つの行にしてもかまいません。もちろんそのままでも大丈夫です。

TTITLE0=川島瑞樹(東山奈央), 日野茜(赤﨑千夏), 堀裕子(鈴木絵理), 上田鈴帆(春野ななみ), 難波笑美(伊達朱里紗) / サ
TTITLE0=マカニ!! (M@STER VERSION)

仕上げ

修正が終わったら送信できるように仕上げをします。

これでいいと思いますが、もしもっと詳しい仕様が知りたければfreedbのドキュメント(DBFORMAT)を見てください。英語です。

ちなみに#Submitted via: は自分はすっとぼけてcurl 7.38.0と書いておきました。

修正を送る

いよいよfreedbサーバに送ります。curlで。仕様ならここにあるdocの中にあります。

コマンドはこうです。4つほど入れるところがありますので入れてください。メールアドレスは適当でもいいんじゃないかな、多分。

curl -X POST http://freedbtest.dyndns.org/~cddb/submit.cgi -H 'Category: {ジャンル}' -H 'Discid: {discid}' -H 'User-Email: {メールアドレス}' -H 'Submit-Mode: submit' -H 'Charset: UTF-8' --data-binary @{修正したデータのファイル名}

200 OK, submission has been sent.と返ってくればとりあえずOKです。(この段階ではまだ反映されていない可能性もあります。)

DB情報ページを更新するなり、クライアントで情報を取得しなおすなりして自分の修正したデータが返ってくれば修正はおしまいです。おつかれさまでした。

もし修正が反映されてない場合は、仕様にそっているかもう一度確認してみてください。